是否可以使用用户定义的数据类型作为参数调试存储过程?
编辑:调用它的语法是什么? (执行....)
我的类型:
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
答案 0 :(得分:5)
我意识到它只是一个表,所以我声明了类型,插入了值并调用了存储过程。
存储过程声明:
CREATE PROCEDURE [dbo]。[spInsertarFactura]
@tableFacturaInspeccion FacturaInspeccion READONLY,
...
调用存储过程:
使用[数据库] GO
DECLARE @return_value intDECLARE @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中调试不同时间点的东西。直到我知道它是正确的,我想要回滚任何行动。