我有一个存储过程,我试图在查询窗口中调试它...当我打开存储过程,我在代码中设置了一些断点,但他们从来没有得到在下面的代码中,我可以遍历USE行,然后设置ANSI_NULLS ON,然后代码只是说成功执行了命令,即使我在它下面的所有代码中都设置了断点。我错过了什么?在MS SQL服务器2008中调试存储过程
USE [Tool1]
GO
/****** Object: StoredProcedure [dbo].[aspdnsf_ImportProductPricing_XML] Script Date: 10/02/2014 09:38:17 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Alter proc [dbo].[aspdnsf_ImportProductPricing_XML]
@pricing ntext
AS
BEGIN
SET NOCOUNT ON
CREATE TABLE #tmp (ProductID int, VariantID int, KitItemID int, Name nvarchar(400), KitGroup nvarchar(800), SKU nvarchar(50), SKUSuffix nvarchar(50), ManufacturerPartNumber nvarchar(50), Cost money, MSRP money, Price money, SalePrice money, Inventory int)
DECLARE @hdoc int, @retcode int
EXEC @retcode = sp_xml_preparedocument
@hdoc OUTPUT,
@pricing
INSERT #tmp
SELECT *
FROM OPENXML(@hdoc, '/productlist/productvariant', 2)
WITH (ProductID int, VariantID int, KitItemID int, Name nvarchar(400), KitGroup nvarchar(800), SKU nvarchar(50), SKUSuffix nvarchar(50), ManufacturerPartNumber nvarchar(50), Cost money, MSRP money, Price money, SalePrice money, Inventory int)
UPDATE dbo.ProductVariant
SET Price = t.Price,
SalePrice = nullif(t.SalePrice,0),
Inventory = t.Inventory,
Cost = t.cost
FROM dbo.ProductVariant p
join #tmp t on p.ProductID = t.ProductID and p.VariantID = t.VariantID
WHERE KitItemID = 0
UPDATE dbo.KitItem
SET PriceDelta = t.Price
FROM dbo.KitItem k
join #tmp t on k.KitItemID = t.KitItemID
WHERE t.KitItemID > 0
exec sp_xml_removedocument @hdoc
DROP TABLE #tmp
END
调试在SQL Server存储过程中相当没用,特别是当涉及到#temp表时。你有没有考虑过古老的'PRINT'和'SELECT'? – 2014-10-02 14:02:57