天天看点

PB中调用ASA存储过程取得其返回值 [转]

一、

连接数据库的时候需要加上 SQLCA.DBParm = "PBNewSPInvocation='Yes',"这样用declare的时候就不分 有无结果集返回都能取到out的参数了

二、

如果要获取OUTPUT可把procedure作為transaction的外部函數引用(local external function). 新建->standare class-> transation -> local external function -> 右键 -> paste special->sql -> remote sp 

定义成external function 不用fatch,直接象普通函数一个调用就行, 打开application -> 属性页中占击->additional properties->variable types->sqlca 下面填上这个uo的名字->ok 

以后把带out的存储过程,定义成local external function 然后就象普通函数一样调用. 

属性页中占击->additional properties->variable types->sqlca 下面填上这个uo的名字如果你做了以上设置,那么调用时变成这样: sqlca.pro1(prm_s,prm_c,ss) 

如果ss是output参数,运行后则   此处ss一定要赋值

ss = 0 

sqlca.pro1(prm_s,prm_c,ss) 

messagebox("test",ss) //你会看到ss的值 

首先正确的声明格式应该是这样 

function long test(ref string out_1) RPCFUNC ALIAS FOR "dbo.kentest" 

参数带ref 关键字 

三、3.1.有时PB自动生成的函数声明中关于SP的名字,可以自己改一下,不要DBA,只要SP的名就可以. 

3.2.SP中一定要有return x 语句

3.3.一般pb生成function 声明是返回long的,如果不是可以自己改,就象API声明一样

四、疑问: 不通过上述外部函数的方法而是通过Declare方法,不能得到return值,不知那位高人你能指点一下。

转自:

PB中调用ASA存储过程取得其返回值 [转]

http://community.csdn.net/Expert/topic/4137/4137305.xml?temp=.9771234