自定义表类型参数的存储过程的调试技巧

调试方法很简单,可能就是一时没有想到,记录到自己博客中,希望能与大家分享。

可以放一些测试数据给临时表,再将临时表的数据插入到表类型的参数中,传入存储过程进行调试。

-- 表类型如下:

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  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值