【问题标题】:Send query from bash to sqlplus将查询从 bash 发送到 sqlplus
【发布时间】:2017-02-21 10:53:49
【问题描述】:

我有一个 bash 脚本,它必须连接到 sqlplus 并执行查询或过程

我该怎么做?

这不起作用..

  function log_to_sqlplus() {
    if [ "$1" != "" ] && [ "$2" != "" ];
    then
        sqlplus '$1/$2' <<EOF 
        BEGIN
              DBTEST.SP_RUN();
         END; /
EOF
    fi
    }

【问题讨论】:

  • “不起作用”是什么意思 - 会发生什么?这正是您要运行的内容,还是您更改了发布格式?
  • @AlexPoole 现在请检查

标签: oracle bash stored-procedures sqlplus


【解决方案1】:

您不应该将凭据括在单引号中,即使参数显示正确,这也会阻止登录成功。 (我建议您可能还想使用 -s 和 -l 标志)。

您还需要将斜杠 (/) 单独放在一行上,它通常显示在行首,尽管在这里似乎无关紧要:

function log_to_sqlplus() {
    if [ "$1" != "" ] && [ "$2" != "" ];
    then
        sqlplus -s -l $1/$2 <<EOF 
        BEGIN
            DBTEST.SP_RUN();
        END;
        /
EOF
    fi
}

已测试运行我有权访问的程序:

#!/bin/bash

function log_to_sqlplus() {
    if [ "$1" != "" ] && [ "$2" != "" ];
    then
        sqlplus -l -s $1/$2 <<EOF
        BEGIN
            -- DBTEST.SP_RUN();
            dbms_stats.gather_schema_stats(user);
        END;
        /
EOF
    fi
}

log_to_sqlplus my_username my_password

得到输出:

PL/SQL procedure successfully completed.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-29
    • 1970-01-01
    • 1970-01-01
    • 2016-07-23
    • 2021-03-08
    • 2017-03-11
    • 2019-01-01
    • 2016-08-12
    相关资源
    最近更新 更多