怎用有出的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 3Given 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) asbegino_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 = 54321string 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 thenSQLCA.f_out_error()RETURN -1end ifFETCH proc_update INTO :o_id_object, o_message;if SQLCA.SqlCode 0 thenSQLCA.f_out_error()CLOSE proc_update;RETURN -1end if--PB帮助例子参考
[解决办法]
改成用数据窗口去做吧,输出一个结果集,这样好些;
也可以试试在定义的时候把输出参数放在后面;