从Sql存储过程中检索数据

时间:2011-03-22 15:47:09

标签: c# database stored-procedures

如何使用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的列,我想要该列中的所有值,但结果只给出该列中的最后一个值。

4 个答案:

答案 0 :(得分:4)

试试这个:

ALTER PROCEDURE [dbo].[GetCariIdleri]

AS BEGIN SET NOCOUNT ON;

-- Insert statements for procedure here
SELECT ID
FROM TBLP1CARI

END

您的proc版本将ID分配给输出变量 - 只能有一个值。

答案 1 :(得分:3)

如果您希望所有行都返回select的结果,那么您的程序正在设置变量@don。

Select ID
FROM TBLP1CARI
where  <criteria>

实际上从技术上返回的内容取决于您的RDBMS,但我认为它是您正在寻找的。

答案 2 :(得分: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是另一种选择。

答案 3 :(得分: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