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

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
ИГ
Сообщения: 3
Зарегистрирован: 26 ноя 2005, 13:22

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

Сообщение ИГ » 26 ноя 2005, 13:26

Что оптимальнее - вызывать ХП через SELECT и в ХП делать SUSPEND; EXIT или вызывать ХП через EXECUTE PROCEDURE <....> RETURNING_VALUES.
Необходимо получать singletone-результаты.

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 26 ноя 2005, 17:06

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

ИГ
Сообщения: 3
Зарегистрирован: 26 ноя 2005, 13:22

Сообщение ИГ » 26 ноя 2005, 20:48

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

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 26 ноя 2005, 22:10

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

ИГ
Сообщения: 3
Зарегистрирован: 26 ноя 2005, 13:22

Сообщение ИГ » 26 ноя 2005, 23:02

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

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Сообщение dimitr » 27 ноя 2005, 09:19

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

Ответить