将查询从 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.
我有一个 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.