2011-04-12 58 views
2

是否可以使用用戶定義的數據類型作爲參數調試存儲過程?使用用戶定義的數據類型調試存儲過程

編輯:這是調用它的語法? (EXEC ....)

我喜歡的類型:

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

回答

5

我意識到它只是一個表,所以我聲明瞭類型,插入了這些值並調用了存儲過程。

存儲過程聲明:

CREATE PROCEDURE [DBO] [spInsertarFactura]
@tableFacturaInspeccion FacturaInspeccion只讀的,
...

調用存儲過程:

用途[數據庫] GO
DECLARE @return_value詮釋

DECLARE @tablaTmp FacturaInspeccion

INSERT INTO @tablaTmp(sIdServicio,nIdTipoInspeccion,sIdTipoMotivoInspeccion,nIdTipoVehiculo, n基準,nNoPeriodica,nTarifaConProyecto,nTarifaSinyecto,nTasaTrafico,nDescuento,n總計)
VALUES( 79,如圖1所示, '00',1,2,2,2,2,2,10,100)

EXEC @return_value = [DBO]。[spInsertarFactura]

然後,調試。

2

是的,你可以正常調試它,但你不幸沒有得到一個很好的觀點在TVP中的數據。

欲瞭解更多信息,請參閱以下Microsoft Connect items(如果您想更好地支持TVP調試,請參閱投票表決);)。

+0

你怎樣才能在「exec ...」中發送數據類型? – ch3r1f 2011-04-12 16:33:52

+0

如果您需要將表傳遞給過程,我建議您考慮將XML表傳遞給過程中的XML參數。 – artofsql 2011-04-12 19:20:40

+0

@ ch3r1f,通過聲明該類型的變量(它會給你一個表變量),將數據加載到它中,然後傳遞變量 - 沒有什麼特別的... – Lucero 2011-04-18 11:43:38

1

讓我建議您在輸入變量中添加一個調試變量(默認值爲0),然後當您要測試SP時,將調試設置爲1,並且可以在測試模式下運行數據查詢。對於instnce您可以添加這樣一行

IF @debug = 1從@tableFacturaInspeccion結束開始選擇*

這將使你看,你wnated有輸入數據是什麼,你想要它是instnce。或者,如果您正在使用聯接作爲插入的一部分執行更復雜的查詢,則可以在脫機模式下看到選定的站點,並在確定如何獲取正確的過程時回滾所有插入。我總是在任何複雜的sp中包含調試或測試變量,因爲我希望能夠在proc中的不同時間點查看事件進行調試。直到我知道它是正確的,我想要回滾任何操作。

相關問題