Здравствуйте.

Как правильно следует делать join ХП в запросе?

Hапример, у меня есть таблица работников Worker, первичный ключ - id_worker.
Есть ХП CalculatePayment, которая на входе получает id_worker, а на выход 
выдает рассчитанную для этого работника з\п payment. Как написать запрос, 
который выведет всех работников и их з\п?

Хочется написать примерно так, как было бы с обычной таблицей:

select w.id_worker, cwp.payment
from Worker w
  join calculatepayment(w.id_worker) cwp on (cwp.id_worker=w.id_worker)

Ругается "column unknown cwp.id_worker" при подготовке запроса.
Если заменить выражение в on на "on (1=1)", то при выполнении в IbExpert 
ругается "The cursor identified in the update or delete statement is not 
positioned on a row. no current record for fetch operation". Если я правильно 
понял, сервер не знает, что передать в параметр процедуры вместо w.id_worker, 
т.к. если туда поставить константу, то все работает.

Я знаю, что можно использовать подзапрос, примерно так:

select w.id_worker,
  (select payment from calculatepayment(w.id_worker))
...

для ХП с одним полем это решит проблему. Hо как переписать запрос, если в ХП 
выходных полей много (не один десяток), и не хочется ради каждого поля отдельно
вызывать ХП?

--
С наилучшими пожеланиями,
Михаил Тронин
--
Вся медицина Ижевска (СКОРО) на http://medicina.izh.ru


Ответить