shell中的EOF块中sqlplus变量值不接受

时间:2017-06-21 07:48:07

标签: sql bash shell unix

我无法为下面代码中写入的变量“y”提供输入。任何人都可以帮助我们。 代码:

#!/bin/bash
${ORACLE_HOME}/bin/sqlplus -s abcd/passabcd <<EOF
declare
res varchar2(9) := '&y';
begin
insert into abc values(10);
if res in ('commit;')
then
EXECUTE IMMEDIATE 'commit;';
elsif res in ('rollback;')
then
EXECUTE IMMEDIATE 'rollback;';
else
DBMS_OUTPUT.PUT_LINE('Enter Correct Input');
end if;
EXCEPTION
   WHEN OTHERS THEN
      dbms_output.put_line('Error msg ' ||  substr(sqlerrm,1,200));
end;
/
EOF

如果我运行它,下面是屏幕。我自动得到sp2-0546错误而没有输入任何输入。

[oracle@ssmz861 ~]$ ./mm.sh
Enter value for y:SP2-0546: User requested Interrupt or EOF detected.
[oracle@ssmz861 ~]$ 

这是一个场景:我有一个pl/sql代码,我需要给sqlplus<EOF .....EOF.之类的方式执行,我需要查看一个查询的输出并通过提供输入来决定是否需要提交或回滚。

提前谢谢 希瓦

0 个答案:

没有答案