怎樣動態調用有輸出參數的ORACLE 存儲過程?注意是動態調用!解决方案

怎樣動態調用有輸出參數的ORACLE 存儲過程?注意是動態調用!!
oracle 存儲過程如下:
create or replace procedure CLT_INV_R001_PRO(
p_dummy1 out varchar2,
p_dummy2 out varchar2,
p_inv_org_id in number,
p_phy_inv_id in number) is
。。。。。。。。
在PB中怎樣動態調用?
我的代碼如下,當沒有p_dummy1 ,p_dummy2 兩個參數的時候,下面的代碼能夠正確執行,但是如果有這個輸出參數的話,下面的代碼在執行【EXECUTE DYNAMIC p2 USING :B,A: DESCRIPTOR sqlda 】完后,發生錯誤
sqlca.sqlerrtext為:ORA-06550: 第 1 行, 第 15 個欄位: 
PLS-00703: 清單中有具名參數的多個執行處理
ORA-06550: 第 1 行, 第 15 個欄位: 
PL/SQL: Statement ignored

  
 。。。。 
PB代碼如下:

ls_sql="execute clt_inv_r001_pro(?,?)"  
  DECLARE p2 DYNAMIC PROCEDURE FOR SQLSA;  
  PREPARE SQLSA FROM :ls_sql;  
  DESCRIBE SQLSA INTO sqlda ;  
  int a,b
// SetDynamicParm(SQLDA,3,a)  
// SetDynamicParm(SQLDA,4,b)  
 EXECUTE DYNAMIC p2 USING DESCRIPTOR sqlda ;  
  if sqlca.sqlcode<0 then
  ss=sqlca.sqlerrtext
CLOSE p2 ;
  end if

------解决方案--------------------
C/C++ code

Example 3

Given this procedure:

CREATE OR REPLACE PROCEDURE spu_edt_object(

o_id_object OUT NUMBER,
o_message OUT VARCHAR2,
a_id_object NUMBER,
a_param VARCHAR2 := NULL,
a_value VARCHAR2 := NULL
) as
begin
o_id_object := 12345;
o_message := 'Hello World';
end;

The DECLARE statement must use named notation because output parameters are defined to the left of input parameters:

dec{0} o_id_object, id_obiect = 54321

string o_message, param = 'Test'

DECLARE proc_update PROCEDURE FOR spu_edt_object (
a_id_object => :id_object,
a_param => :param
)
USING SQLCA;

EXECUTE proc_update;
if SQLCA.SqlCode 0 then
SQLCA.f_out_error()
RETURN -1
end if

FETCH proc_update INTO :o_id_object, o_message;
if SQLCA.SqlCode 0 then
SQLCA.f_out_error()
CLOSE proc_update;
RETURN -1
end if

--PB帮助例子参考

------解决方案--------------------
改成用数据窗口去做吧,输出一个结果集,这样好些;
也可以试试在定义的时候把输出参数放在后面;