将查询从 bash 发送到 sqlplus
Posted
技术标签:
【中文标题】将查询从 bash 发送到 sqlplus【英文标题】:Send query from bash to 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 现在请检查 【参考方案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.
【讨论】:
以上是关于将查询从 bash 发送到 sqlplus的主要内容,如果未能解决你的问题,请参考以下文章
将 ssh 登录发送到 Mattermost 的 bash 脚本的问题 [重复]