powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Возвращение рекордсета (recordset) их хранимой процедуры
12 сообщений из 12, страница 1 из 1
Возвращение рекордсета (recordset) их хранимой процедуры
    #35314539
davydoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем доброго дня!

Есть ASE 12.5. Я в процессе изучения TSQL. В документации по TSQL написано, что хранимая возвращает только (1) return status, (2) return parameters. Но не написано, что она может возвращать record set. Действительно, вызывая процедуру из другой процедуры я не могу использовать "возвращаемые" рекордсеты. Только при вызове процедуры из клиента я могу их получить. Известно, что рекордсеты "возвращаются" select-ом. Мне интересен механизм возврата рекордсета, а именно, в какой поток процедура "печатает" рекордсет (stdout?) и будут-ли проблемы, если я после select вызову print, который что-то напечатает в тот же поток не в формате TDS. Использует-ли print другой поток вывода? Интересно получить развернутую информацию или какие-нибудь ссылки по вопросу.

Заранее всем спасибо,
Виталий
...
Рейтинг: 0 / 0
Возвращение рекордсета (recordset) их хранимой процедуры
    #35314626
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Причем тут stdout поток и хранимые процедуры не понятно.
Если хотите рекордсет ХП использовать в другой ХП, то только через временные таблицы, которые создаются в вызывающей ХП, а зполняются в вызываемой ХП.
все наши на www.corba.kubsu.ru
...
Рейтинг: 0 / 0
Возвращение рекордсета (recordset) их хранимой процедуры
    #35314658
davydoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за ответ. Не очень понятно, как сервер возвращает рекордсеты клиенту и что будет, если в процедуре я выполню select и print. Как клиент обработает результат команды print?
...
Рейтинг: 0 / 0
Возвращение рекордсета (recordset) их хранимой процедуры
    #35314770
print идет на клиента так-же как ошибки сервера, в виде текстовых сообщений.

всё остальное это резалтсеты разных типов.
никакого stdout нет.
разве-что вы рассматриваете как работает isql.

из процедуры в процедуру можно вернуть только RETURN и OUT ПАРАМЕТРЫ.
из процедуры написанной на яве (в 12.5 нужна отдельная лицензия) можно получить все виды резалтсетов.
...
Рейтинг: 0 / 0
Возвращение рекордсета (recordset) их хранимой процедуры
    #35314861
davydoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильно-ли я понимаю, что существуют несколько "каналов" передачи информации от сервера? По-одному каналу клиенту передаются рекордсеты, а по другому - сообщения (об ошибке и просто вывод) и ни никак не связаны. stdout я упомянул в том смысле, что sybase мог бы выдавать всю информацию в стандартный вывод, как делают многие программы под unix, а клиент интерпретирует эту информацию. Это мне навеял isql и AquaData Studio, в которых все сообщения и рекордсеты выводятся в одно и то же окно. Вообще, интересно почитать об этом более подробно. Буду рад, если приведете ссылки на такого рода информацию. И еще, интересно, какие виды рекордсетов бывают?
...
Рейтинг: 0 / 0
Возвращение рекордсета (recordset) их хранимой процедуры
    #35315095
да. все верно.

вот ссылка

а лучше (по моему) посмотреть стандартные ASE samples (C/C++)
и почитать include
...
Рейтинг: 0 / 0
Возвращение рекордсета (recordset) их хранимой процедуры
    #35315372
davydoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большое спасибо!
...
Рейтинг: 0 / 0
Возвращение рекордсета (recordset) их хранимой процедуры
    #35315657
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
davydoff пишет:
> написано, что хранимая возвращает только (1) return status, (2) return
> parameters. Но не написано, что она может возвращать record set.

Ну действительно. А еще там не написано, что в ней можно
писать IF-ы, WHILE-ы и она ВООБЩЕ МОЖЕТ работать.


Дело в том, что вернуть из процедуры набор данных - это настолько
естественно и понятно для всех разработчиков на TSQL, что про это,
видимо, просто не сочли нужным написать.

Вы просто в любом месте процедуры пишите SELECT, и он будет
передан клиенту (ну если он не в переменные, конечно). Наборов
данных таких может быть сколько угодно.

> Действительно, вызывая процедуру из другой процедуры я не могу
> использовать "возвращаемые" рекордсеты.

А это практически почти невозможно в ASE, к сожалению или счастью.

Только при вызове процедуры из
> клиента я могу их получить.

Да. Почти так. На самом деле поищите по форуму типа "select из процедуры"
должно быть дофига понаписано про это.

> select-ом. Мне интересен механизм возврата рекордсета, а именно, в какой
> поток процедура "печатает" рекордсет (stdout?)

Все, в том числе наборы данных, передаются клиенту по спец. протоколу,
называемому TDS.

и будут-ли проблемы, если
> я после select вызову print, который что-то напечатает в тот же поток

Нет, не будут.

> не в формате TDS.

Невозможно что-то "напечатать не в формате TDS"

Использует-ли print другой поток вывода?

Нет, тот же TDS.
Кстати, если интересно, Sybase наконец-то опубликовал его спецификацию,
она доступна всем теперь.

Интересно
> получить развернутую информацию или какие-нибудь ссылки по вопросу.

Зачем бы ?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Возвращение рекордсета (recordset) их хранимой процедуры
    #35315665
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
davydoff пишет:

> Правильно-ли я понимаю, что существуют несколько "каналов" передачи
> информации от сервера?

Нет, неправильно. "Канал" только один. Но двунаправленный.

По-одному каналу клиенту передаются рекордсеты, а
> по другому - сообщения (об ошибке и просто вывод) и ни никак не связаны.

Нет, они передаются последовательно, сначала одни, потом другие,
потом могут снова первые, и т.д.

> stdout я упомянул в том смысле, что sybase мог бы выдавать всю
> информацию в стандартный вывод, как делают многие программы под unix, а
> клиент интерпретирует эту информацию.

Нет, там по сети происходит взаимодействие, и все гораздо сложнее.
А в stdout сервер обычно пишет свой лог.

Это мне навеял isql и AquaData
> Studio, в которых все сообщения и рекордсеты выводятся в одно и то же
> окно.

Это зависит от клиента, как он это делает. Посмотрите на SQLAdvantage например,
там два режима есть.

Вообще, интересно почитать об этом более подробно. Буду рад, если
> приведете ссылки на такого рода информацию. И еще, интересно, какие виды
> рекордсетов бывают?

много. Это - из заголовка OpenClient.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
/*
** Result types from ct_results().
*/
#define CS_ROW_RESULT		(CS_INT) 4040 
#define CS_CURSOR_RESULT	(CS_INT) 4041 
#define CS_PARAM_RESULT		(CS_INT) 4042 
#define CS_STATUS_RESULT	(CS_INT) 4043 
#define CS_MSG_RESULT		(CS_INT) 4044 
#define CS_COMPUTE_RESULT	(CS_INT) 4045 
#define CS_CMD_DONE		(CS_INT) 4046 
#define CS_CMD_SUCCEED		(CS_INT) 4047 
#define CS_CMD_FAIL		(CS_INT) 4048 
#define CS_ROWFMT_RESULT	(CS_INT) 4049 
#define CS_COMPUTEFMT_RESULT	(CS_INT) 4050 
#define CS_DESCRIBE_RESULT	(CS_INT) 4051 


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Возвращение рекордсета (recordset) их хранимой процедуры
    #35315668
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv> Действительно, вызывая процедуру из другой процедуры я не могу
> использовать "возвращаемые" рекордсеты.

А это практически почти невозможно в ASE, к сожалению или счастью."К сожалению", "к сожалению"...
Ты просто не представляешь как это удобно обращаться к хранимке как к таблице.
...
Рейтинг: 0 / 0
Возвращение рекордсета (recordset) их хранимой процедуры
    #35315747
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl пишет:

> "К сожалению", "к сожалению"...
> Ты просто не представляешь как это удобно обращаться к хранимке как к
> таблице.

Я представляю. А еще я представляю как ты обрезаешь все возможности
стоить планы оптимизатору. И еще всякие гадости. В общем - вопрос спорный.
Конечно, если фича есть, ею можно не пользоваться, или пользоваться
аккуратно, т.е. лучше, чтобы она была бы. Но почему-то ее упорно ASE не делает.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Возвращение рекордсета (recordset) их хранимой процедуры
    #35359232
davydoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги. С опозданием, но все-таки позвольте поблагодарить всех ответивших на мой вопрос. Выши ответы помогли мне получить более ясное представление о теме. Спасибо!
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Возвращение рекордсета (recordset) их хранимой процедуры
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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