2010-10-12 92 views
0

我使用的是SQL Server 2000中
我的SP產生follwing輸出:如何從我的存儲過程中獲取一組數據?

alt text

它總結了所有Taxable Earnings(頂部結果)和由Deductible Expenses(中間成果)之和減去它獲得員工的Net Taxable Income

我如何才能得到淨應稅收入的價值?

這裏是我的SP

/* 
DECLARE @NET_TAXABLE_INCOME AS NUMERIC(19, 2) 
EXEC NET_TAXABLE_INCOME '000001', '10/15/2010', @NET_TAXABLE_INCOME OUTPUT 
SELECT @NET_TAXABLE_INCOME 
*/ 
CREATE PROC [dbo].NET_TAXABLE_INCOME 
(
    @EMPLOYEENO AS VARCHAR(10), 
    @PAYROLLPERIOD_INPUT AS DATETIME, 
    @NET_TAXABLE_INCOME AS NUMERIC(19, 2) = NULL OUTPUT 
) 
AS 
BEGIN 
    DECLARE @TAXABALEEARNINGS AS NUMERIC(18, 2) 
    EXEC TAXABLE_EARNINGS_BREAKDOWN @EMPLOYEENO, @PAYROLLPERIOD_INPUT, @TAXABALEEARNINGS OUTPUT 
    DECLARE @DEDUCTIBLEEXPENSES AS NUMERIC(18, 2) 
    EXEC DEDUCTIBLE_EXPENSES_BREAKDOWN @EMPLOYEENO, @PAYROLLPERIOD_INPUT, @DEDUCTIBLEEXPENSES OUTPUT 

    SET @NET_TAXABLE_INCOME = @TAXABALEEARNINGS - @DEDUCTIBLEEXPENSES 
    SELECT @NET_TAXABLE_INCOME AS [NET_TAXABLE_INCOME] 
END 

是否有一個SQL語句,將導致不打印的EXEC的結果呢?

回答

2

在C#端的數據,你可以這樣做:

SqlDataReader sqlReader = sqlCmd.ExecuteReader(); 
sqlReader.NextResult(); // Skip first result set. 
sqlReader.NextResult(); // Skip second result set. 
while (sqlReader.Read()) 
{ 
    var netTaxableIncome = sqlReader.GetValue(0); 
} 
+0

準確地說,我即將發佈的答案,我沒有找到它。 – 2010-10-12 03:46:14

+0

好吧,先生,我會試試你的..謝謝。 – yonan2236 2010-10-12 05:22:49

0

您可以將執行的存儲過程的結果轉換爲臨時表。

CREATE TABLE #Tmp (etc etc) 

INSERT #Tmp 
EXEC DEDUCTIBLE_EXPENSES_BREAKDOWN @EMPLOYEENO, @PAYROLLPERIOD_INPUT, @DEDUCTIBLEEXPENSES OUTPUT 

但你也可以使用EXEC命令結合起來爲好,這就是答案,以捕獲存儲過程的輸出。所有你需要做的就是創建一個表,通過INSERT語句接收存儲過程的輸出:

關鍵是創建表(在這個例子中是一個臨時表),以便它有正確數量的列和兼容的數據類型來捕獲存儲過程的輸出。

注:語法是psuedo語法,但你明白了,我希望!

這樣,你可以放棄這些結果 - 因爲這是你的意圖,而不會影響你的調用存儲過程的輸出!但是,如果這些存儲過程在您的控制之下,那麼您應該考慮是否真的要重用它們/更改,然後僅返回輸出參數而不返回結果集。您未necesssarily返回,你不打算使用,至少在這種情況下

+0

嗯...我已經嘗試過了。但是有一些限制,它會導致錯誤(http://www.sommarskog.se/share_data.html#INSERTEXEC)。 「它不能嵌套,因此,一次只能有一個INSERT-EXEC活動。」 – yonan2236 2010-10-12 02:54:10

+0

@ yonan2236 - 這些存儲過程是否也會調用其他SP的,是嗎?另外,我假設你沒有任何控制權來修改這些SP,是嗎? – InSane 2010-10-12 03:22:47

+0

是的,先生,它叫其他SP – yonan2236 2010-10-12 05:14:58

相關問題