2013-11-15 239 views
0

我试图执行存储过程,但我不确定我的语法是否错误。PLSQL Oracle 10 - 执行存储过程

set dbms_output.put_line on; 

declare 
    v_premnum NUMBER(10); 
    v_util_type CHAR(10); 
    v_result VARCHAR2(200); 

Begin 
    execute myprocedure('E', v_util_type, 73105 , v_premnum); 
    dbms_output.put_line = v_result 
end; 

/
+1

删除'execute'。 'myprocedure('E',v_util_type,73105,v_premnum);'就够了。 –

+1

并将'dbms_output.put_line = v_result'更改为'dbms_output.put_line(v_result);' –

+0

不是v_result null?你在哪里分配任何东西? 以及v_premnum和v_util_type?他们是OUT参数还是什么? – ogres

回答

0

有两种方法。无论你的过程有一个输出参数:

declare 
    v_premnum NUMBER(10) := 1234; 
    v_util_type CHAR(10) := 'the type'; 
    v_result VARCHAR2(200); 
begin 
    myprocedure('E', v_util_type, 73105 , v_premnum, v_result); 
    dbms_output.put_line(v_result); 
end; 

或者它应该是返回所需的值的函数:

declare 
    v_premnum NUMBER(10) := 1234; 
    v_util_type CHAR(10) := 'the type'; 
    v_result VARCHAR2(200); 
begin 
    v_result := myfunction('E', v_util_type, 73105 , v_premnum); 
    dbms_output.put_line(v_result); 
end;