Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Возвращение набора данных из хранимой процедуры / 4 сообщений из 4, страница 1 из 1
14.11.2002, 14:23:40
    #32067934
Осирис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возвращение набора данных из хранимой процедуры
Пробую сделать простейший вариант. Например так:

CREATE PROCEDURE my
@id int,
@m CURSOR VARYING OUTPUT
AS
SELECT * FROM TABLE

Вызываю ее так:

DECLARE @rez AS CURSOR
EXECUTE my 5, @rez OUTPUT
OPEN @rez

На последней строке ругается.

Как это сделать правильно ?

Заранее спаибо.
...
Рейтинг: 0 / 0
14.11.2002, 14:33:31
    #32067941
tygra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возвращение набора данных из хранимой процедуры
Никак ТАК не сделаешь

Через временную таблицу
...
Рейтинг: 0 / 0
14.11.2002, 14:35:29
    #32067944
Александр Спелицин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возвращение набора данных из хранимой процедуры
Вот пример из BOL

USE pubs
GO
/* Create a procedure with a cursor output parameter. */
CREATE PROCEDURE OpenCrsr @OutCrsr CURSOR VARYING OUTPUT AS

SET @OutCrsr = CURSOR FOR
SELECT au_lname
FROM authors
WHERE au_lname LIKE 'S%'

OPEN @OutCrsr
GO

/* Allocate a cursor variable. */
DECLARE @CrsrVar CURSOR

/* Execute the procedure created earlier to fill
the variable. */
EXEC OpenCrsr @OutCrsr = @CrsrVar OUTPUT

/* Use the variable to fetch the rows from the cursor. */
FETCH NEXT FROM @CrsrVar
WHILE (@@FETCH_STATUS <> -1)
BEGIN
FETCH NEXT FROM @CrsrVar
END

CLOSE @CrsrVar

DEALLOCATE @CrsrVar
GO
...
Рейтинг: 0 / 0
14.11.2002, 14:35:30
    #32067945
snake
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возвращение набора данных из хранимой процедуры
Смотри BOL->CREATE PROCEDURE
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
E. Use an OUTPUT cursor parameter
OUTPUT cursor parameters are used to pass a cursor that is local to a stored procedure back to the calling batch, stored procedure, or trigger.

First, create the procedure that declares and then opens a cursor on the titles table:

USE pubs
IF EXISTS (SELECT name FROM sysobjects 
      WHERE name = 'titles_cursor' and type = 'P')
DROP PROCEDURE titles_cursor
GO
CREATE PROCEDURE titles_cursor @titles_cursor CURSOR VARYING OUTPUT
AS
SET @titles_cursor = CURSOR
FORWARD_ONLY STATIC FOR
SELECT *
FROM titles

OPEN @titles_cursor
GO

Next, execute a batch that declares a local cursor variable, executes the procedure to assign the cursor to the local variable, and then fetches the rows from the cursor.

USE pubs
GO
DECLARE @MyCursor CURSOR
EXEC titles_cursor @titles_cursor = @MyCursor OUTPUT
WHILE (@@FETCH_STATUS =  0 )
BEGIN
   FETCH NEXT FROM @MyCursor
END
CLOSE @MyCursor
DEALLOCATE @MyCursor
GO

...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Возвращение набора данных из хранимой процедуры / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]