PLSQL语句执行但未获得输出

时间:2018-11-02 19:03:00

标签: sql oracle stored-procedures plsql oracle11g

我有此过程来创建一个表“圆”,并向其中插入一些半径和相应的区域,这是我的代码

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 :(得分:1)

在上面提到的代码中,您只是在创建一个过程。在匿名块中使用表之前,还需要成功执行它。 我已经创建了您的过程here,并且该过程已成功创建。

仅当尝试执行它时,处理过程代码中不存在表圈的异常,然后执行(或调用)它。此外,您可以使用匿名块将值插入表中。

答案 1 :(得分:0)

如果该表不存在,尝试删除该表将失败。其余代码将无法运行,因此您的表将永远不会被创建

进行掉线尝试并发现错误,然后继续

此答案具有更多信息:Oracle: If Table Exists