执行Oracle存储过程

时间:2011-02-01 13:11:57

标签: oracle stored-procedures oracle11g oracle-sqldeveloper

我有一个带有signiture的oracle存储过程:(包的一部分:承包商)

PROCEDURE usp_sel_contractors(g_contractors OUT sel_contractor);

我试图执行它:

execute Contractor.usp_sel_contractors;

我习惯了MSSqlServer。这似乎应该是向前发展的。

我一直收到错误:

Invalid Sql Statement

谢谢!

2 个答案:

答案 0 :(得分:3)

假设sel_contractor是引用游标类型,您可以在SQL Plus中执行此操作:

var rc refcursor

exec usp_sel_contractors(:rc)

print rc

答案 1 :(得分:1)

我不确定为什么你会得到那个特定的错误信息,但显而易见的问题是该过程有一个参数而你没有传递一个。由于它是一个OUT参数,您需要传递一个适当类型的变量,该变量将由过程填充。

例如:

DECLARE
  my_contractors  sel_contractor;
BEGIN
  usp_sel_contractors( my_contractors );

  // Do something with the contents of my_contractors here
END;
/