1)在PB在用户对象画笔中创建一个Class-Standard类型的,从Transaction继承的用户对象。另存为uo_sql.
2)在此用户对象中,声明Local External Functions,将存储过程以RPCFUNC关键字声明为外部函数。在Declare Local External Functions对话框中按Procedures按钮选择要调用的后台存储过程,或直接输入语句:
subroutine PROC_OUT(long A1,ref blob B1,ref boolean C1,ref blob D1,ref string E1,ref string F1,ref date G1,ref decimal H1,ref double I1,ref double J1,ref long K1,ref long L1,ref time M1,ref datetime N1,ref long O1,ref blob P1,ref string Q1) RPCFUNC
subroutine PROC_INOUT(ref long A1,ref blob B1,ref boolean C1,ref blob D1,ref string E1,ref string F1,ref date G1,ref decimal H1,ref double I1,ref double J1,ref long K1,ref long L1,ref time M1,ref datetime N1,ref long O1,ref blob P1,ref string Q1) RPCFUNC
subroutine PROC_INOUT(ref long A1,ref blob B1,ref boolean C1,ref blob D1,ref string E1,ref string F1,ref date G1,ref decimal H1,ref double I1,ref double J1,ref long K1,ref long L1,ref time M1,ref datetime N1,ref long O1,ref blob P1,ref string Q1) RPCFUNC
3)保存该用户对象。
4)在Application画笔中,进入应用属性对话框,在Variable Types页,将上Transaction用户对象设置为缺省的全局变量SQLCA。
5)脚本中,编码调用相应的外部函数。形式:SQLCA.函数名(参数)。如可用“sqlca.proc_out(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q)”调用例子中定义的PROC_OUT存储过程。其中a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q为调用参数。
以DECLARE PROCEDURE语句声明存储过程
直接使用以下脚本即可调用
declare proc_ini procedure for proc_in('a',0,'sgsdg','w','sgsdg',sysdate,34634,34634,34634,34634,3464,curtime,curtime,34,'a','2');
//`g',g=sysdate,h=34634,i=34634,j=34634,k=34634,l=3464,m=curtime,n=curtime,o=34,p='a',q='2';
execute proc_ini;
//`g',g=sysdate,h=34634,i=34634,j=34634,k=34634,l=3464,m=curtime,n=curtime,o=34,p='a',q='2';
execute proc_ini;
两种方法的区别:
1)方法一适用于具有IN、OUT和IN OUT参数的存储过程,而方法二仅支持IN和OUT参数,不支持IN OUT参数;
2)方法一对参数的数目无限制,方法二最多支持255个参数;
3)方法一不支持记录(Recorder)的传递,方法二可传递和接收记录。