将查询从 bash 发送到 sqlplus

Send query from bash to sqlplus

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

我该怎么做?

这行不通..

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

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

您还需要斜线 (/) 单独成行,它通常显示在行的开头,但在这里似乎无关紧要:

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

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

#!/bin/bash

function log_to_sqlplus() {
    if [ "" != "" ] && [ "" != "" ];
    then
        sqlplus -l -s / <<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.