新客网WWW.XKER.COM:致力做中国最专业的网络学院!
学院: 操作系统 - 网络应用 - 服务器 - 网络安全 - 工具软件 - 办公软件 - Web开发 - 数据库 - 网页设计 - 图形图像 - 媒体动画 - 硬件学堂 - 存储频道 - QQ专区
您的位置:首页 > 软件开发 > 数据库 > Oracle教程 > 正文:解析Oracle和SQL Server存储过程的调试

解析Oracle和SQL Server存储过程的调试

新客网 XKER.COM 2007-08-09 来源: yu 收藏本文

在大型数据库中,因为开发的需要,经常地需要调用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 nocount on

if (@property is null) or 
(@property = '')

begin

raiserror('Must specify a 
property name.',-1,-1)

return (1)

end
收藏】 【评论】 【推荐】 【投稿】 【打印】 【关闭
发表评论
要记得去论坛讨论,点击注册新会员匿名评论
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
阅读排行
随机推荐
实用信息推荐