PLSQL Automation处于交互模式

时间:2013-09-10 11:38:15

标签: shell plsql expect

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

  

sample.sh

... 
sqlplus /nolog @sample.sql 

....
  

sample.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

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

找到解决方案,已在下面提到

2 个答案:

答案 0 :(得分:1)

尝试使用:

sample.sh

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

sample.sql

select &1 from table;

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

答案 1 :(得分:0)

<强>解决方案:

好的,我发现答案非常简单

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

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

一旦脚本提示:

Enter username: 

自动&#34; abc&#34;进入。