2011-03-22 123 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分配到输出变量 - 这永远只能有一个值。