SQLPlus Проверьте, существует ли таблица в ShellScript - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь создать ShellScript, который подключается к sqlplus и проверяет, существует ли таблица, в случае ее отсутствия скрипт создаст ее.

Таблица может быть пустой.

Я пробовал это:

#!/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.

Ouput:

  • У вас есть 0 таблиц, когда таблица существует.(пусто)
  • У вас есть N таблиц, когда таблица существует.(не пусто)
  • У вас есть FROM table_name;ОШИБКА в строке 7: ORA-06550: строка 7, столбец 9: PL / SQL: ORA-00942: таблица или представление не существует ORA-06550: строка 6, столбец 4: PL / SQL: оператор SQL игнорирует таблицы.

1 Ответ

0 голосов
/ 30 января 2019

Попробуйте SELECT table_name FROM all_tables WHERE table_name = 'your_table_name'

all_tables - это словарь, который делает то, что подразумевает его имя.

...