1

我有一个调用 .sql 文件的 shell

样本.sh

... 
sqlplus /nolog @sample.sql 

....

示例.sql

....
accept selection Prompt "Enter username"
... 

我需要从 shell 脚本自动执行脚本。如何通过 shell 脚本自动输入数据。

我试过以下

将参数传递给 SQL

   sqlplus /nolog @sample.sql <<EOF
    abc
    EOF

使用期望

/usr/bin/expect  <<EOD 2>&1
set timeout 60
 expect {
 "Enter username "{
  send "abc\r"
 }}
expect eof

注意:我没有将参数传递给脚本。脚本提示输入信息,用户需要即时输入。

找到了解决方案,下面已经提到了

4

2 回答 2

1

尝试这样使用:

sample.sh

var1="somevalues"
...
sqlplus -s user/pass@host <<EOF
@sample.sql $var1
EOF
...

sample.sql

select &1 from table;

您可以通过这种方式从 Unix tp SQL 传递值。

于 2013-09-10T12:49:44.157 回答
0

解决方案:

好的,我发现答案很简单

 sqlplus / as sysdba @sample.sql <<EOF
    abc
    EOF

问题是我没有以当前用户身份登录。

只要脚本提示:

Enter username: 

自动输入“abc”。

于 2013-09-11T17:11:28.403 回答