当前位置: 代码迷 >> PB >> PB获取ORACLE存储过程返回值解决思路
  详细解决方案

PB获取ORACLE存储过程返回值解决思路

热度:180   发布时间:2016-04-29 05:19:14.0
PB获取ORACLE存储过程返回值
由于项目的需要,我们使用OLE DB(PROVIDER='OraOLEDB.Oracle')连接的ORACLE
很简单的一个存储过程如下:

CREATE OR REPLACE procedure p_test
(
    rtn out number
)
as

begin
    rtn:=899;
end p_test;


PB代码如下:
//存储过程
long ll_rtn
 DECLARE p_test PROCEDURE FOR P_TEST @rtn=0  OUTPUT;
execute p_test;
if sqlca.sqlcode<>0 then
Messagebox('error',sqlca.sqlerrtext)
return
end if

fetch p_test into  :ll_rtn;
close p_test;
messagebox('inf', "存储过程返回:" +string(ll_rtn) )


结果如果通过PB专用接口可以获取正确的值,但是如果通过OLE DB连接的话,总是获取0,崩溃。PB10  PB12.5测试都是这样的结果,希望指点一下,研究了好久也不行。
------解决思路----------------------
声明成这样试试
function long up_config(string a) rpcfunc ALIAS FOR 'up_config'
------解决思路----------------------
引用:
Quote: 引用:

声明成这样试试
function long up_config(string a) rpcfunc ALIAS FOR 'up_config'


写错地方了?

没错,存储过程也可以这样声明
------解决思路----------------------
引用:
Quote: 引用:

Quote: 引用:

声明成这样试试
function long up_config(string a) rpcfunc ALIAS FOR 'up_config'


写错地方了?

没错,存储过程也可以这样声明

确实没这么用过,能提供个例子吗
再转发一个收藏的:http://blog.csdn.net/balloonman2002/article/details/239535
------解决思路----------------------
我也转发一个:http://blog.csdn.net/lijianhe043/article/details/9057555
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

声明成这样试试
function long up_config(string a) rpcfunc ALIAS FOR 'up_config'


写错地方了?

没错,存储过程也可以这样声明

确实没这么用过,能提供个例子吗
再转发一个收藏的:http://blog.csdn.net/balloonman2002/article/details/239535

------解决思路----------------------
把=0去掉试试

//存储过程
long ll_rtn
 DECLARE p_test PROCEDURE FOR P_TEST @rtn  OUTPUT;
execute p_test;
if sqlca.sqlcode<>0 then
    Messagebox('error',sqlca.sqlerrtext)
    return
end if
 
fetch p_test into  :ll_rtn;
close p_test;
messagebox('inf', "存储过程返回:" +string(ll_rtn) )

  相关解决方案