如何使用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 :(得分: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,但我认为它是您正在寻找的。 p>
答案 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