使用用户定义的数据类型调试存储过程

时间:2011-04-12 16:22:02

标签: sql-server tsql

是否可以使用用户定义的数据类型作为参数调试存储过程?

编辑:调用它的语法是什么? (执行....)

我的类型:

CREATE TYPE [dbo].[FacturaInspeccion] AS TABLE(  
    [sIdServicio] [nvarchar](3) NOT NULL,  
    [nIdTipoInspeccion] [int] NOT NULL,  
    [sIdTipoMotivoInspeccion] [nvarchar](2) NOT NULL,  
    [nIdTipoVehiculo] [int] NOT NULL,  
    [nBase] [real] NOT NULL,  
    [nNoPeriodica] [real] NULL,  
    [nTarifaConProyecto] [real] NULL,  
    [nTarifaSinyecto] [real] NULL,  
    [nTasaTrafico] [real] NULL,  
    [nDescuento] [real] NULL,  
    [nTotal] [float] NULL  
     


  GO

3 个答案:

答案 0 :(得分:5)

我意识到它只是一个表,所以我声明了类型,插入了值并调用了存储过程。

存储过程声明:

  

CREATE PROCEDURE [dbo]。[spInsertarFactura]
      @tableFacturaInspeccion FacturaInspeccion READONLY,
      ...

调用存储过程:

  

使用[数据库]   GO
  DECLARE @return_value int

     

DECLARE @tablaTmp FacturaInspeccion

     

INSERT INTO @tablaTmp(sIdServicio,nIdTipoInspeccion,sIdTipoMotivoInspeccion,nIdTipoVehiculo,       nBase,nNoPeriodica,nTarifaConProyecto,nTarifaSinyecto,nTasaTrafico,nDescuento,nTotal)
      价值(79,1,'00',1,2,2,2,2,10,10,100)

     

EXEC @return_value = [dbo]。[spInsertarFactura]

然后,调试时间。

答案 1 :(得分:2)

是的,您可以正常调试,但遗憾的是您无法很好地了解TVP中的数据。

有关详细信息,请参阅以下Microsoft Connect items(如果您希望获得更好的调试TVP支持,请投票;))。

答案 2 :(得分:1)

我建议您在输入变量中添加一个调试变量(默认值为0),然后当您想要测试SP时,将调试设置为1,并且可以在测试模式下运行数据查询。对于instnce,您可以添加一行

IF @debug = 1从@tableFacturaInspeccion END

开始选择*

这样就可以让你看到你想要输入的数据是你想要的数据。或者如果你正在使用连接作为ana插入的一部分进行更复杂的查询,你可以在debuig模式中看到select stament并在你弄清楚如何使proc正确时回滚所有插入。我总是在任何复杂的sp中包含调试或测试可变,因为我希望能够在proc中调试不同时间点的东西。直到我知道它是正确的,我想要回滚任何行动。