Страница 1 из 1

Что оптимальнее - SUSPEND; EXIT или вызов ХП через EXECUTE?

Добавлено: 26 ноя 2005, 13:26
ИГ
Что оптимальнее - вызывать ХП через SELECT и в ХП делать SUSPEND; EXIT или вызывать ХП через EXECUTE PROCEDURE <....> RETURNING_VALUES.
Необходимо получать singletone-результаты.

Добавлено: 26 ноя 2005, 17:06
Merlin
Насколько я понял, речь о PSQL, то бишь о вызовах из других процедур. В этом случае однозначно executable процедуры. Для дёргания с клиента в общем тоже, но в некоторых версиях клиентской библиотеки именно IB для этого предусмотрены грабли. Говорят где-то в IB7.x их наконец убрали. В релизных FB их никогда не было.

Добавлено: 26 ноя 2005, 20:48
ИГ
На самом деле интересует как вызов внутри процедур, так и вызов из клиента. Поэтому, хотелось бы знать: а чем, собсно, оптимальнее?
Кроме того: сейчас ехал в метро и вдруг подумал: а если делать вызов со стороны клиента, то куда передавать выходные параметры? Т.е. что писать после returning_values в вызове процедуры из клиента?

Добавлено: 26 ноя 2005, 22:10
Merlin
ИГ писал(а):На самом деле интересует как вызов внутри процедур, так и вызов из клиента. Поэтому, хотелось бы знать: а чем, собсно, оптимальнее?
Затратами памяти.
ИГ писал(а): Кроме того: сейчас ехал в метро и вдруг подумал: а если делать вызов со стороны клиента, то куда передавать выходные параметры? Т.е. что писать после returning_values в вызове процедуры из клиента?
Тут сильно зависит от того, на чём делается клиент. Returning_values - это чисто PSQL-синтаксис. Инструменты разработки клиента же так или иначе разбираются со структурой XSQLDA и интерпретируют её в абстракции более высокого уровня соответсвии со своей архитектурой. Например, в IBX для этого предназначен компонент TIBStoredProc, интерперетирующий возврат executable SP как выходные параметры. Вообще-то поконкретней надо быть, утомляет - ни версии сервера, ни среды программирования - сиди тут и гадай что тебе ответить.

Добавлено: 26 ноя 2005, 23:02
ИГ
Прошу прощения, что не "представился" :)
Сервер - Firebird 1.5.2.4731
Cистема программирования - Qt.
Как я полагаю (надо будет проверить), вероятно, если в самой процедуре указать возвращаемые параметры, то они должны быть винды и в полученном результате (в том порядке, в котором они заданы в ХП). Однако, можно ли задать сисок необходимых параметров именно через SQL? Потому как через интерфейс Qt этого не сделаешь :(

Добавлено: 27 ноя 2005, 09:19
dimitr
Возвращаются всегда все выходные параметры процедуры. Поэтому указывать некий их список в SQL смысла нет. Соответственно, нет и такой возможности.