powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Возвращение набора данных из процедуры.
4 сообщений из 4, страница 1 из 1
Возвращение набора данных из процедуры.
    #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
Возвращение набора данных из процедуры.
    #32490361
mustlive
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как это "как"? Ну, через Query, например, если разговор про неSQL язык. Или во временную таблицу их залить и ползать сколько влезет
...
Рейтинг: 0 / 0
Возвращение набора данных из процедуры.
    #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
Возвращение набора данных из процедуры.
    #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
4 сообщений из 4, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Возвращение набора данных из процедуры.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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