2011-03-22 184 views
1

如何通過使用sql存儲過程來檢索一組數據,即表的整個列?從Sql存儲過程檢索數據

當我執行下面的過程時,它只給出了ID列的最後一個ID列。

ALTER PROCEDURE [dbo].[GetCariIdleri] @don int OUTPUT 
AS 
BEGIN 
SET NOCOUNT ON; 
-- Insert statements for procedure here 
SELECT @don = ID 
FROM TBLP1CARI 
END 

TBLCARI有一個名爲ID列,我想在此列所有的值,但結果只給出該列中的最後一個值。

+0

當你執行_what_程序? – jcolebrand 2011-03-22 15:48:35

+0

我沒有添加代碼,因爲它沒有任何內容。 – Bastardo 2011-03-22 15:50:11

+0

請提供示例 – Hopdizzle 2011-03-22 15:50:30

回答

2

@don參數僅保留最後一個ID,並獨自回到 刪除它,或者如果你需要它添加另一個選擇:

ALTER PROCEDURE [dbo].[GetCariIdleri] 

AS BEGIN SET NOCOUNT ON; 

-- Insert statements for procedure here 
SELECT ID 
FROM TBLP1CARI 

END 

ALTER PROCEDURE [dbo].[GetCariIdleri] @don int OUTPUT 

AS BEGIN SET NOCOUNT ON; 

-- Insert statements for procedure here 
SELECT @don = ID 
FROM TBLP1CARI 

SELECT ID 
FROM TBLP1CARI 

END 
+0

不客氣。 – manji 2011-03-22 16:25:50

2

讀取數據的電網,你應該使用的ExecuteReader(),即

using(var reader = cmd.ExecuteReader()) { 
    while(reader.Read()) { 
     // the first column, assuming [n][var]char() 
     Console.WriteLine(reader.GetString(0)); 
    } 
} 

有了這樣一個SELECT語句:

SELECT ID 
FROM TBLP1CARI 

您不能選擇所有這些細胞進入一個輸出參數,因爲你有多行; SELECT是替代方法。

+0

中選擇ID即可。謝謝Mr.Gravell – Bastardo 2011-03-22 16:01:14

+0

感謝您的其他信息。關於閱讀數據網格,它確實幫助我在接下來的步驟中。 – Bastardo 2011-03-23 09:37:44

3

如果您希望所有行都返回select的結果,您的過程將設置變量@don。

Select ID 
FROM TBLP1CARI 
where <criteria> 

實際上返回的內容在技術上取決於您的RDBMS,但我認爲它是您正在查找的內容。

4

試試這個:

ALTER PROCEDURE [dbo].[GetCariIdleri] 

AS BEGIN SET NOCOUNT ON; 

-- Insert statements for procedure here 
SELECT ID 
FROM TBLP1CARI 

END 

你的PROC的版本ID分配到輸出變量 - 這永遠只能有一個值。