上面的关于存储过程的程序有点有关问题,哪位高手能够看出来

下面的关于存储过程的程序有点问题,谁能够看出来?
openwithparm (w_poppup,'center')
int oi_errcode
string oc_errtext
DECLARE c PROCEDURE FOR PKG_ZXGL_PROCESS.p_main
    @存储过程中第一个变量对应的变量名 = '131010', 
    @存储过程中第二个变量对应的变量名 = '', 
    @存储过程中第三个变量对应s的变量名 = :oi_errcode output, 
    @存储过程中第四个变量对应的变量名 = :oc_errtext output;
//setpointer(hourglass!)
//sqlca.autocommit = true
EXECUTE c ;
//if SQLCA.sqlcode = 0 then
FETCH c INTO :oi_errcode, :oc_errtext;
 //在此,就可以判断返回值oi_errcode和oc_errtext了
   if oi_errcode = -1 then//执行 失败
//  rollback;
       messagebox('提示', '存储过程【PKG_ZXGL_PROCESS.p_main】执行失败!~r~n失败原因:' + oc_errtext)
else  
messagebox("恭喜","存储执行成功!")//执行成功
//  commit;  //需要提交数据才调用  commit;
    end if
CLOSE c;
close(w_poppup)
rollback;    

------解决思路----------------------
DECLARE c PROCEDURE FOR PKG_ZXGL_PROCESS.p_main
  @存储过程中第一个变量对应的变量名 = '131010',  
  @存储过程中第二个变量对应的变量名 = '',  
  @存储过程中第三个变量对应s的变量名 = :oi_errcode output,  
  @存储过程中第四个变量对应的变量名 = :oc_errtext output;


不是所有的连接方式下,内嵌式过程调用都支持output这种取值方式的,这个在help 里搜索 DECLARE PROCEDURE可以看到。
这样一般取到的是存储过程的结果集,也就是说如果存储过程有select语句检索结果集,接收的是这个结果集的值。

最通用的取存储过程返回值的方式:
自己申明一个自定义的transaction object,然后在外部函数申明,右击,parte special -》sql-》Remote Stored Procedure 把存储过程申明为外部函数。然后像函数那样调用.过程的output参数,传入时要设置为ref