同城约会| 杂志期刊| 小说| 两性论坛| 军事电影| 两性知识| 电脑知识| 汽车| 旅游| 收藏

浅析Oracle和SqlServer存储过程的调试、出错处理

来源:CSDN 作者:hissan 出处:综艺读书 2005-11-01 
关 键 词:数据库  存储过程  qq  oracle  
  在大型数据库中,因为开发的需要,经常地需要调用Procedure,开发Procedure在Oracle和Sqlserver上因为语法不同,而有所区别,但是在调试上,都是比较的不容易,尤其是在一些错误处理上。
  首先说调试:
  1。对于Oracle的调试,可以借助于第三方的工具,比如Pl/Sql Developer,我在用的版本是6.0.5.926;首先对该Procedure右键处理,添加“add debug information”,然后选择“test”,打开新的测试窗口,在下方对应的输入输出变量地方,添加相应的测试数据,注意:这里的数据输入,不需要引号,输出参数不需要输入然后点击“start debugger”,或者按F9,进行测试,可以选择测试的步骤如“step into”等,然后可以在下面的script窗口看到,中间变量;
  
  2。对于SqlServer调试,我还没有找到比较好的第三方工具,目前是采用将中间的变量值或者sql语句插入到另一个表中,或者直接print出来的方式。第一种需要借助 exec('') 方法,注意里面的取变量值的写法,可参考下面的例子:


exec('update SupplyplanLack set Completedate = GetDate()
from supplyPlanLack a where '+ @ssTmp +' and
'+@iCompleteQty+' >= (select s.RequestQty * a.RationQty as ReqQty
from Balance a, SupplyPlan s where a.Vehicle = s.Vehicle
and a.Part=s.Part and a.SupplyPlanNo = s.SupplyPlanNo
and '+ @ssTmp +')')


  在print中,需要注意类型的转换,一般是借用 convert(varchar(11),@spNOTo) 方法来实现,否则会提示类型转换错误!

  3。错误处理上,对于Sqlserver可以采用开始自定义变量,然后根据不同判断,改变该值然后推出的方法来处理,见下例


set @exec_num=0

if (@spNOFrom=0 or @spNOTo=0 or @reuseUser=NULL)
begin
set @exec_num=1
goto the_end
end

the_end:
return


  或者是这种:


set nocount on

if (@property is null) or (@property = '')
begin
raiserror('Must specify a property name.',-1,-1)
return (1)
end


  或者是对该错误全局变量 @@error 数值的判断上。


更多文章 更多内容请看Oracle 10g基础应用  oracle 存储过程  sqlserver 存储过程专题,或进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
综艺读书宗旨
相关专题
·存储过程 (1683篇文章)
·数据库处理专题 (7218篇文章)
·网络存储—光纤通道 (1710篇文章)
·Oracle 10g基础应用 (4024篇文章)
·服务器存储专栏 (6220篇文章)
·oracle 存储过程 (46篇文章)
·sqlserver 存储过程 (31篇文章)
热点标签: 数据库  存储过程  qq  oracle  
最新技术文档
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
站内频道文章精选
搜索您感兴趣的内容
Web 全站
综艺电脑频道编辑信箱  告诉我们您想看的专题或文章

Google

友情互链 | 收藏本站 | 联系我们 | 在线留言 | 京ICP备08008424号|