数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

Oracle和SQL Server存储调试和出错处理


发布日期:2020年12月09日
 
Oracle和SQL Server存储调试和出错处理

在大型数据库中因为开发的需要经常需要调用Procedure在Oracle和SQLServer上开发Procedure因为语法不同而有所区别调试Procedure在两个系统上都不太容易尤其是进行错误处理时更是如此

首先说调试

对于Oracle的调试可以借助于第三方的工具比如Pl/SQL Developer版本为例首先对该Procedure右键处理添加add debug information然后选择test打开新的测试窗口在下方对应的输入输出变量处添加相应的测试数据注意这里的数据输入不需要引号输出参数不需要输入!

然后点击start debugger或者按F进行测试可以选择测试的步骤如step into然后可以在下面的script窗口看到中间变量

对于SQLServer调试在没有找到较好的第三方工具的情况下目前采用的是将中间的变量值或者SQL语句插入到另一个表中或者直接print出来的方式第一种需要借助 exec() 方法注意里面的取变量值的写法可参考下面的例子

exec(update SupplyplanLack set Completedate = GetDate()

from supplyPlanLack a where + @ssTmp + and

+@iCompleteQty+ >= (select sRequestQty * aRationQty as ReqQty

from Balance a SupplyPlan s where aVehicle = sVehicle

and aPart=sPart and aSupplyPlanNo = sSupplyPlanNo

and + @ssTmp +))

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

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

set @exec_num=

if (@spNOFrom= or @spNOTo= or @reuseUser=NULL)

begin

set @exec_num=

goto the_end

end

the_end:

return

或者是这种

set nocount on

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

begin

raiserror(Must specify a property name)

return ()

end

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

上一篇:OracleForm属性、内置子程序、触发器等(1)

下一篇:使用VB调用Oracle程序包内的存储过程返回结果集