一个奇怪的问题(调用SYBASE数据库已经存在的存储过程)
这两天都在为解决这个问题搞得焦头烂额,希望各位XD提供点思路。
问题:data_process是一个已经编写好的过程,完成对一个临时表的数据的格式转化,然后将转换后的结果存入到最终的结果表。
(1)为什么在数据库管理系统中直接调用过程能够完成所有的操作,而在PB中调用却只能执行部分语 句(我当时在下面的PB语句中没有用Rollback命令)?
(2)为什么下面这两段代码执行的结果有很大的不同?
代码(1)
long ret
declare myproc procedure for data_process using sqlca;
execute myproc;
ret=sqlca.sqlcode
if ret >= 0 then
commit using sqlca;
messagebox("提示","操作执行成功!")
else
rollback using sqlca;
messagebox("操作失败","返回代码:"+string(ret)+";"+sqlca.sqlerrtext)
end if
close myproc;
代码(2)
declare myproc procedure for data_process using sqlca;
execute myproc;
if sqlca.sqlcode >= 0 then
commit using sqlca;
messagebox("提示","操作执行成功!")
else
rollback using sqlca;
messagebox("操作失败","返回代码:"+string(ret)+";"+sqlca.sqlerrtext)
end if
close myproc;
代码(1)执行时,显示:
操作失败,返回代码:0
代码(2)执行时,显示:
操作失败,返回代码:-1