我有一個存儲過程,我試圖在查詢窗口中調試它...當我打開存儲過程,我在代碼中設置了一些斷點,但他們從來沒有得到在下面的代碼中,我可以遍歷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