SQLPlus检查表是否在ShellScript中存在

时间:2019-01-30 13:08:16

标签: shell sqlplus

我正在尝试创建一个连接到sqlplus的ShellScript,并验证是否存在表(如果不存在该脚本将创建该表)。

表可以为空。

我尝试过:

#!/bin/bash

sqlplus -s user/pass> tabs << EOF


SET SERVEROUTPUT ON
SET FEEDBACK OFF
DECLARE
   e_not_exist EXCEPTION;
   PRAGMA EXCEPTION_INIT(e_not_exist, -942);
   tab_count NUMBER;
BEGIN
   SELECT COUNT(*) INTO tab_count
   FROM table_name;

   DBMS_OUTPUT.PUT_LINE(tab_count);
EXCEPTION
  when e_not_exist then
    dbms_output.put_line('Table or view does not exists');

END;
/
EXIT
EOF

tabcount=`cat tabs`
echo You have $tabcount tables.

输出:

  • 表存在时,您有0个表。 (空)
  • 表存在时,您有N个表。 (不为空)
  • 您有FROM table_name;第7行出现错误: ORA-06550:第7行,第9列:PL / SQL:ORA-00942:表或视图确实 不存在ORA-06550:第6行,第4列:PL / SQL:忽略了SQL语句 表。

1 个答案:

答案 0 :(得分:0)

尝试SELECT table_name FROM all_tables WHERE table_name = 'your_table_name'

all_tables是一个字典视图,其功能与名称相同。