如何(在代码内)断开与不正确的表名称上的SQL连接?

时间:2014-07-14 22:27:50

标签: oracle batch-file sqlplus

方案

我有一个通过sqlplus调用.sql文件的批处理脚本。 .sql文件如下:

set serveroutput on
variable out_val varchar2;
exec &1;
print out_val
exit

问题

批处理脚本传递.sql执行的字符串。我希望这个字符串在99%的时间内是正确的,但我需要计划最后1%,因为批处理将每5分钟调用一次。当.sql传递正确的登录信息和架构但不正确的表名时,我的批处理挂起并且不会自动关闭。相反,它会保持登录到sql连接,直到我按Ctrl + C并手动关闭它。我尝试了以下TRY​​ / CATCH块,但它没有改变问题:

set serveroutput on
variable out_val varchar2;
begin try
exec &1;
end try
begin catch
exit
end catch
print out_val
exit

问题

如果输入的表名不正确,如何编写批处理脚本或sql代码块以自动断开与sql连接的连接? (请注意,我不能使用IF语句来测试每个可能的表名,有太多而且它们可能经常更改。如果找不到表名,它需要能够断开连接。)

1 个答案:

答案 0 :(得分:1)

尝试

WHENEVER SQLERROR EXIT FAILURE ROLLBACK    
set serveroutput on
variable out_val varchar2;
exec &1;
print out_val
exit