PL / SQL Developer中执行过程的问题

时间:2011-03-05 11:12:59

标签: sql oracle plsql procedure ora-00900

我这是我第一次尝试创建程序并执行它。 首先,我创建简单的表。表的DB方案在这里:

表名:Ziaci

列:

  • ZiakId - 主键,数字
  • 姓氏,varchar2
  • FirstName,varchar2
  • TriedaId - forgein key,number

存储过程只在表中插入数据,我用这个SQL cmd创建了存储过程:

create procedure ziaci_proc(surname_in in varchar2, 
firstname_in in varchar2, triedaid_in in number)
is
begin
  insert into ziaci (surname, firstname,triedaid) values (surname_in,firstname_in,triedaid_in);
  end;

我试着把这个行为称为:

execute ziaci_proc('X','Y',1)

我收到此错误:

ORA-00900无效的SQL语句

PL / SQL Developer IDE中带有红色下划线的执行单词。

我测试了这个程序并且效果很好。

我只能使用此SQL命令执行此过程:

begin
ziaci_proc('A','B',2);
end;

什么是坏事,谢天谢地。

2 个答案:

答案 0 :(得分:11)

我认为你在“SQL窗口”中编写命令。您应该使用“命令窗口”成功执行此行:

execute ziaci_proc('X','Y',1);

答案 1 :(得分:11)

如上所述使用execute调用存储过程特定于SQL * Plus。实际上,SQL * Plus会将execute some_proc()转换为BEGIN some_proc(); END;,您可以通过尝试调用不存在的过程来自行查看:

SQL> execute some_proc()
BEGIN some_proc(); END;

      *
ERROR at line 1:
ORA-06550: line 1, column 7:
PLS-00201: identifier 'SOME_PROC' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored