2016-01-22 36 views
0

我想從一個包調用過程:如何從包中調用過程?

exec TEST_Procedure.TEST_Procedure_PR(Parameter1, Parameter2, Parameter3, Parameter4, Parameter5); 

的參數都是引用,我有5 IN參數和1個OUT(REF CURSOR)。

但是,當我直接調用包中的過程時,我得到了我的值。 如果我把從SQL CMD線的過程我得到的錯誤:

ORA-06550: line 1, column 7: 
PLS-00306: wrong number or types of arguments in call to 'TEST_Procedure_PR' 

我在做什麼錯?

+1

看來你只傳遞了5個參數,而不是6.你可以請你發佈你的程序代碼嗎? – Aleksej

+1

如何從命令行調用它?你定義了你的OUT變量嗎? – stee1rat

+0

你不能使用'exec'來執行這樣的程序。我建議你閱讀一下[匿名塊](http://www.oracle.com/technetwork/issue-archive/2011/11-mar/o21plsql-242570.html) – AndrewMcCoist

回答

1

在您的軟件包中,只需編寫過程調用,而不需要EXEC語句,該語句僅在SQL * Plus中需要。例如,

CREATE PACKAGE BODY YOUR_PACKAGE AS 

PROCEDURE SOME_PROCEDURE IS 
BEGIN 
    TEST_Procedure.TEST_Procedure_PR(Parameter1, 
            Parameter2, 
            Parameter3, 
            Parameter4, 
            Parameter5); 
END SOME_PROCEDURE; 

END YOUR_PACKAGE; 

祝你好運。