Оператор PLSQL выполняется, но не получает вывод - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть эта процедура, чтобы создать таблицу 'круг' и вставить в нее некоторый радиус и соответствующую область, это мой код

create or replace procedure table1
 is
BEGIN
  execute immediate'drop table circle';
  execute immediate'create table circle (r int, a int)';

end;

declare 
r int;
ar float;

begin   
   for r in 3 .. 7 loop 
        ar:=3.14*r*r;
        INSERT INTO circle VALUES(r,ar);
   end loop;
   execute immediate 'select * from circle';
end;

Но когда я запускаю это, я получаю это предупреждение

Warning: Procedure created with compilation errors.

и когда я пытаюсь найти стол, я получаю

 SQL> select * from circle;
 select * from circle
          *
 ERROR at line 1:
 ORA-00942: table or view does not exist

что не так в моем коде?

Ответы [ 2 ]

0 голосов
/ 03 ноября 2018

В приведенном выше коде вы просто создаете процедуру. Это также должно быть успешно выполнено перед использованием таблицы в анонимном блоке. Я создал вашу процедуру здесь , и процедура успешно создана.

Просто, когда вы пытаетесь выполнить его, обработайте исключение для случая, когда круг таблицы не существует в коде вашей процедуры, а затем выполните (или вызовите) его. Кроме того, вы можете использовать анонимный блок для вставки значений в вашу таблицу.

0 голосов
/ 02 ноября 2018

Если таблица не существует, попытка удалить ее не удастся. Остальная часть кода не будет выполняться, поэтому ваша таблица никогда не создается

Выполните попытку сброса и поймайте ошибку, затем продолжите

Этот ответ содержит больше информации: Oracle: если таблица существует

...