Oracle 将查询从bash发送到sqlplus

Oracle 将查询从bash发送到sqlplus,oracle,bash,stored-procedures,sqlplus,Oracle,Bash,Stored Procedures,Sqlplus,我有一个bash脚本,它必须连接到sqlplus并执行查询或过程 我该怎么做 这不管用 function log_to_sqlplus() { if [ "$1" != "" ] && [ "$2" != "" ]; then sqlplus '$1/$2' <<EOF BEGIN DBTEST.SP_RUN(); END; / EOF fi } 函数

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

我该怎么做

这不管用

  function log_to_sqlplus() {
    if [ "$1" != "" ] && [ "$2" != "" ];
    then
        sqlplus '$1/$2' <<EOF 
        BEGIN
              DBTEST.SP_RUN();
         END; /
EOF
    fi
    }
函数日志到sqlplus(){
如果[“$1”!=”]&&[“$2”!=”];
然后

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

您还需要斜杠(
/
)单独在一行上,斜杠通常显示在行的开头,尽管在这里它似乎并不重要:

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

“不起作用”是什么意思?发生了什么?这正是你想要运行的还是你已经更改了发布的格式?@AlexPoole现在请检查一下
#!/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.