Извлечение данных из хранимых процедур Sql - PullRequest
1 голос
/ 22 марта 2011

Как я могу получить набор данных, целый столбец таблицы, используя хранимую процедуру 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 ]

4 голосов
/ 22 марта 2011

Попробуйте это:

ALTER PROCEDURE [dbo].[GetCariIdleri]

AS BEGIN SET NOCOUNT ON;

-- Insert statements for procedure here
SELECT ID
FROM TBLP1CARI

END

Ваша версия процедуры присваивает ID выходной переменной, которая может иметь только одно значение.

3 голосов
/ 22 марта 2011

Ваша процедура устанавливает переменную @don, если вы хотите, чтобы все строки просто возвращали результаты выбора.

Select ID
FROM TBLP1CARI
where  <criteria>

То, что на самом деле возвращается, технически зависит от вашей RDBMS, но я думаю, что это то, что вы естьищу.

2 голосов
/ 22 марта 2011

параметр @don сохраняет только последний идентификатор и возвращается один, удалите его или, если вам нужно, добавьте еще один параметр выбора:

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
2 голосов
/ 22 марта 2011

для чтения сетки данных, вы должны использовать 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 - это путь вместо этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...