自定义表类型参数的存储过程的调试技巧
2012-12-27 17:35
441 查看
调试方法很简单,可能就是一时没有想到,记录到自己博客中,希望能与大家分享。
可以放一些测试数据给临时表,再将临时表的数据插入到表类型的参数中,传入存储过程进行调试。
-- 表类型如下:
--存储过程如下:
--调试代码如下:
可以放一些测试数据给临时表,再将临时表的数据插入到表类型的参数中,传入存储过程进行调试。
-- 表类型如下:
USE [PX_PrjManage] GO CREATE TYPE [dbo] . [SaveGHTData] AS TABLE ( [CT_ProNO] [int] NOT NULL, [CT_WorkNO] [int] NOT NULL, [CT_CPA] [decimal] ( 18 , 2 ) NULL, [CT_Operator] [varchar] ( 50 ) NULL, [CT_State] [int] NULL, [CT_Version] [int] NULL ) GO
--存储过程如下:
ALTER PROCEDURE [dbo] . [SaveGHTData] ( @ProjType varchar ( 10 ), @GHTData dbo . SaveGHTData Readonly ) AS BEGIN declare @tableName varchar ( 100 ), @SQL nvarchar ( 500 ) CREATE TABLE #r ( CT_ProNO int , CT_WorkNO int , CT_CPA decimal ( 18 , 2 ), CT_Operator varchar ( 50 ), CT_State int , CT_Version int ) if @ProjType = 'HT' begin SET @tableName = 'dbo.CDMS_ContractInfo'; END if @ProjType = 'GS' BEGIN SET @tableName = 'dbo.CDMS_ConEstimate' ; END if @ProjType = 'TZ' BEGIN SET @tableName = 'dbo.CDMS_ConInvestment' ; END begin transaction BEGIN insert into #r select * from @GHTData set @SQL = ' delete from ' + @tableName + ' where CT_WorkNO in (select CT_WorkNO from #r) and CT_ProNO=(select top 1 CT_ProNO from #r)' ; exec ( @SQL ) exec ( ' insert into ' + @tableName + '(CT_Guid,CT_ProNO,CT_WorkNO,CT_CPA,CT_UpdateDate,CT_Operator,CT_State,CT_Version) select NEWID(),CT_ProNO,CT_WorkNO,CT_CPA,convert(varchar(24),getdate(),120),CT_Operator,CT_State,CT_Version from #r ' ) drop table #r END if ( @@error <> 0 ) rollback transaction else commit transaction if ( @@error > 0 ) return - 1 else return 1 END
--调试代码如下:
CREATE TABLE #r ( CT_ProjectNO varchar ( 20 ), CT_WorkNO varchar ( 20 ), CT_CPA decimal ( 18 , 2 ), CT_UpdateDate varchar ( 50 ), CT_Operator varchar ( 50 ), CT_State int , CT_Version int ) declare @testtbl dbo . SaveGHTData insert into #r select '1' , '1' , 1800.00 , CT_UpdateDate = convert ( varchar ( 24 ), getdate (), 120 ), 'ABC' , 2 , 2 insert into @testtbl select * from #r ; drop table #r exec dbo . SaveGHTData 'GS' , @testtbl
相关文章推荐
- MySQL存储过程和自定义函数、Navicat、创建存储过程和函数、调用存储过程和函数、三种方式、In和Out类型参数、
- 使用mssql2008新特性(存储过程参数类型使用"用户自定义表"来实现批量DML更新多表)解决项目里遇到的性能问题
- MySQL存储过程和自定义函数、Navicat、创建存储过程和函数、调用存储过程和函数、三种方式、In和Out类型参数、
- 包含表值类型参数的存储过程调试方法
- sql 存储过程参数是表类型,数据库中如何调用
- 遍历数据库中的用户存储过程,获得每个存储过程的参数名、参数类型、存储过程名称等信息以xml的形式保存
- 存储过程传递参数时出现类型转换错误!如:varchar转换为int时出错
- (技巧篇)存储过程调试技巧搜集
- 自定义数据类型修改--存储过程
- 获取存储过程参数,类型,长度
- 使用强类型DataSet创建高效的数据访问层:存储过程输出参数的使用
- 修改存储过程的指定参数类型
- 存储过程数据集输出参数类型为非游标
- 调试带返回参数的存储过程注意事项
- ASP为什么取不到存储过程OUTPUT类型参数的值
- SQL2005创建带有通配符的存储过程(INT字段类型必须在参数中声明为字符串型)
- 存储过程调试过程中DATETIME参数的输入故障解决方法
- Oracle复合类型参数的存储过程以及JDBC调用
- (技巧篇)存储过程调试技巧搜集
- SQL 用户定义表类型,在存储过程里使用数据类型作参数