powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Процедурный вопрос (использование табличного результата)? ASE 12.5
16 сообщений из 16, страница 1 из 1
Процедурный вопрос (использование табличного результата)? ASE 12.5
    #36579881
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго дня!

Подскажите как быть в такой ситуации:

Имеем
1) функцию Funca - возвращает табличный результат из одного поля и одной строки, т.е.
my_field555
2) 4 параметра к функции (p1, p2, p3, p4)
---
3) процедуру Proca

Цель
В процедуре Proca вызвать функцию Funca c параметрами, и далее использовать полученный результат, т.е.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
create Proca 
as
begin
/*объявляем переменную в которую хочу получить результат*/
declare @resu int
/* вызываем процедуру */
Proca p1 p2 p3 p4
/*вызывается она именно так, не в скобках и параметры не через запятую*/

тут я хочу обработать полученный результат
end

для примера функция readtext
...
Рейтинг: 0 / 0
Процедурный вопрос (использование табличного результата)? ASE 12.5
    #36580468
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В ASE нет селективных процедур.

Можно возвращать данные через временную таблицу-гнездо.

Но это вообще плохая идея -- прятать набор данных в процедуру, чтобы потом из него SELECT-ить.

Надо такое -- лучше используй VIEW. Не получается использовать view -- не делай так вообще.
...
Рейтинг: 0 / 0
Процедурный вопрос (использование табличного результата)? ASE 12.5
    #36580921
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

нет, я не про селективную процедуру говорю.
вьюху сделать не получится.
что мне надо, так это получить в переменную результат выполнения вот той хитрой функции, в которой не прокатит вариант сделать вот так:
Код: plaintext
select @my_var = Funca p1 p2 p3 p4
или
Код: plaintext
select @my_var = Funca(p1, p2, p3, p4)
или
Код: plaintext
set @my_var = Funca p1 p2 p3 p4
или
Код: plaintext
set @my_var = Funca(p1, p2, p3, p4)
и вот так не выйдет:
Код: plaintext
exec @my_var = Funca p1 p2 p3 p4

т.е. эта функция возвращает мне результат как если его возвразать таким путем:
Код: plaintext
select @vvv as m_field
а не стандартным
Код: plaintext
return @vvv
и это мне не нравится....
...
Рейтинг: 0 / 0
Процедурный вопрос (использование табличного результата)? ASE 12.5
    #36581919
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Табличных переменных тоже нет.

И вообще на фиг они никому не нужны.
...
Рейтинг: 0 / 0
Процедурный вопрос (использование табличного результата)? ASE 12.5
    #36581930
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, это не таблица, а одно значение ?

Тогда легче.

Пока в ASE (12.5) нет функций на TSQL. Но в 15 -ом они уже есть.

В 12.5 можно вызвать процедуру и получить обратно данные в выходном параметре.

Код: plaintext
1.
2.
3.
4.
declare @myValue myValueType

exec @rc = myFunctionalProc .... @myoutpatram = @myValue output


и далее можно использовать эту переменную.
...
Рейтинг: 0 / 0
Процедурный вопрос (использование табличного результата)? ASE 12.5
    #36582118
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivА, это не таблица, а одно значение ?

Тогда легче.

Пока в ASE (12.5) нет функций на TSQL. Но в 15 -ом они уже есть.

В 12.5 можно вызвать процедуру и получить обратно данные в выходном параметре.

Код: plaintext
1.
2.
3.
4.
declare @myValue myValueType

exec @rc = myFunctionalProc .... @myoutpatram = @myValue output


и далее можно использовать эту переменную.
в вашем примере это вызов процедуры с аутом (так умею делать), а у меня это функция такая стремная...
...
Рейтинг: 0 / 0
Процедурный вопрос (использование табличного результата)? ASE 12.5
    #36582140
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Функий нет в ASE. Если это было в другой СУБД, функцию надо будет переделывать в процедуру, или использовать ASE 15.
...
Рейтинг: 0 / 0
Процедурный вопрос (использование табличного результата)? ASE 12.5
    #36582153
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivФункий нет в ASE. Если это было в другой СУБД, функцию надо будет переделывать в процедуру, или использовать ASE 15.

в ase 12.5 есть встроенная функция readtext , вот ее мне и надо использовать в процедуре, а затем в той же процедуре мне надо использовать полученный результат этой функции в переменную, только получить результат в перменную у меня не получается...
...
Рейтинг: 0 / 0
Процедурный вопрос (использование табличного результата)? ASE 12.5
    #36582185
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так так бы и сказали.

Только READTEXT нифига не функция, а совсем оператор TSQL:

http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.help.ase_12.5/title.htm

И, на сколько я помню, в переменную читать не может, может только возвращать клиенту .
...
Рейтинг: 0 / 0
Процедурный вопрос (использование табличного результата)? ASE 12.5
    #36582583
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivНу так так бы и сказали.

Только READTEXT нифига не функция, а совсем оператор TSQL:

http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.help.ase_12.5/title.htm

И, на сколько я помню, в переменную читать не может, может только возвращать клиенту .

понятно, спасибо за ответы :)
...
Рейтинг: 0 / 0
Процедурный вопрос (использование табличного результата)? ASE 12.5
    #36582695
Alexzzy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще, текстовый тип (text) нельзя в переменную грузить.
...
Рейтинг: 0 / 0
Процедурный вопрос (использование табличного результата)? ASE 12.5
    #36582704
Alexzzy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще, текстовый тип (text) нельзя в переменную грузить.
...
Рейтинг: 0 / 0
Процедурный вопрос (использование табличного результата)? ASE 12.5
    #36583037
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexzzyЕще, текстовый тип (text) нельзя в переменную грузить.
разве? а если его конвертнуть в varchar(len(me_text_type_field))? :)
...
Рейтинг: 0 / 0
Процедурный вопрос (использование табличного результата)? ASE 12.5
    #36583216
Alexzzy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ImperousAlexzzyЕще, текстовый тип (text) нельзя в переменную грузить.
разве? а если его конвертнуть в varchar(len(me_text_type_field))? :)
Конвертнуть то можно, но varchar имеет ограниченный размер (зависит от page size)...
...
Рейтинг: 0 / 0
Процедурный вопрос (использование табличного результата)? ASE 12.5
    #36583218
Alexzzy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл упомянуть. varchar, насколько я помню, не может быть больше размера страницы. Отсюда и ограничения.
...
Рейтинг: 0 / 0
Процедурный вопрос (использование табличного результата)? ASE 12.5
    #36583257
Alexzzy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь. varchar зависит от page size, но не так как я написал.
Проверил на двух ASE. xxx - text
Запрос:
select convert(varchar(20000), xxx) from zzz

Ошибки:
ASE 11.9.2 (page size 2K)
Length or precision specification 20000 is not within the range of 1 to 255.

ASE 15.0.3 (page size 8K)
Length or precision specification 20000 is not within the range of 1 to 16384.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Процедурный вопрос (использование табличного результата)? ASE 12.5
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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