Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Возвращение набора данных из процедуры. / 4 сообщений из 4, страница 1 из 1
21.04.2004, 17:07
    #32490338
Akni
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возвращение набора данных из процедуры.
Добрый день всем.

Возможно, вопрос глупый, но никак не найду сама ответ.

Использую ASA6.
Ситуация такая: вызывается процедура, возвращающая набор данных.
Описана так:
Код: plaintext
1.
2.
3.
4.
CREATE PROCEDURE AUser.SP1(Param1 INT, Param2 DOUBLE)
RESULT (Field1 INT, Field2 INT, Field3 VARCHAR (10 ))
BEGIN
...
END;


Вызывается, соответственно, так:
Код: plaintext
CALL AUser.SP1 (10 ,  2  .5 )


Сам вопрос: как "достучаться" до значений полей, которые возвращает процедура, например, пройтись по ним курсором, или записать эти данные в таблицу БД?
...
Рейтинг: 0 / 0
21.04.2004, 17:13
    #32490361
mustlive
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возвращение набора данных из процедуры.
Как это "как"? Ну, через Query, например, если разговор про неSQL язык. Или во временную таблицу их залить и ползать сколько влезет
...
Рейтинг: 0 / 0
21.04.2004, 17:35
    #32490452
Akni
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возвращение набора данных из процедуры.
разговор именно про SQL, иначе и вопросов бы не было.
Постараюсь объяснить поподробнее:
есть одна хп (назовем ее spMain), из которой несколько раз вызывается другая хп (SP1) с разными параметрами. Результаты, которые возвращает SP1, должны быть обработаны в spMain.

Что Вы понимаете под заливкой во временную таблицу?
конструкции типа
Код: plaintext
select * from SP1() into #temporaryTable

насколько я знаю, не существует.

Вариант создания в spMain глобальной временной таблицы и заливки в нее данных прямо в SP1 как бы понятен, тогда нет смысла вообще НД из нее возвращать.

Но интересно, возможно ли это сделать по-другому.
Цитата из хелпа:
авторYou can modify procedure result sets, unless they are generated from a view. The user calling the procedure requires the appropriate permissions on the underlying table to modify procedure results. This is different than the usual permissions for procedure execution, where the procedure owner must have permissions on the table.
Может мне кто-нибудь объяснить, что они под этим подразумевают и как это делается?
...
Рейтинг: 0 / 0
21.04.2004, 17:53
    #32490505
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возвращение набора данных из процедуры.
В ASA9 вопросов не возникает, так как есть SELECT * FROM StoredProc()
В ASA6 так не сделать, однако можно попробовать через курсор:
Код: plaintext
1.
2.
3.
4.
FOR LoopTest AS CursorTest NO SCROLL CURSOR FOR
  CALL SP1()
DO
  MESSAGE Field1 TO CLIENT;
END FOR;

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


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