![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Можно ли использовать запрос из нескольких таблиц, одна из
Rule © (2005-01-24 19:42:00)которых хранимаю процедура, ну Типа:
select c.*, d.* from naklad c, pereuchettovaronnaklad(c.id) d
где pereuchettovaronnaklad(c.id) естественно хранимаю процедура, которая имеет входной параметр в виде айди наклданой ... ? так вот парсер пропускает, а при выполнении пишет чтото наподобии
"The cursor identified in the update or delete statement is not positionet on a row.
no current record for fetch operation"
Ой простите, забыл, использую фаерберд 1.5, запрос выполняю в эксперте ...
для пущего страха привожу код процедуры (чтоб вы убедились что там нет операций удаления и вставки)
CREATE PROCEDURE PEREUCHETTOVARONNAKLAD (
ID_NAKLAD INTEGER)
RETURNS (
NEW_SUMMA NUMERIC(7,2),
NEW_PRICE NUMERIC(7,2),
ID_MOVETOVAR INTEGER,
PRICEIN NUMERIC(7,2),
SUMMIN NUMERIC(7,2),
NAME VARCHAR(200),
EDIZMER VARCHAR(3),
CCOUNT NUMERIC(15,2),
PRICE NUMERIC(7,2),
SUMMA NUMERIC(7,2))
AS
DECLARE VARIABLE TID INTEGER;
begin
for SELECT c.name, d.name, b."VALUE", e.price, (b."VALUE"*e.price), c.id, b.id, g.new_price, (g.new_price*b."VALUE")
from move_naklad a, movetovar b, tovar c, edizmer d, pricetovar e, tovarpereuchet g
where a.id_naklad=:id_naklad
and a.id_movetovar=b.id
and b.id_tovar=c.id
and c.id_edizmer=d.id
and c.id=e.id_tovar
and g.id_tovar=c.id
and g.id_movetovar=b.id
and g.startend=0
and e.adatime=(select distinct max(f.adatime)
from pricetovar f where f.id_tovar=e.id_tovar and f.adatime<=b.adatime)
into :name, :edizmer, :ccount, :price, :summa, :TID, :id_movetovar, :new_price, :new_summa
do
begin
select coalesce(price,0) from gettovarpricein(:TID) into :pricein;
summin=pricein*ccount;
suspend;
end
end
посоветуйте пожалуйста кто чего может, код таблицы приводить не буду, там просто несколько полей и все ....
Заранее спасибо ...
Rule (2005-01-26 14:05:00) [1]TohaNik © (25.01.05 20:22) [4]
ничего не получается все равно ...
Johnmen © (26.01.05 9:24) [5]
Огромное спасибо ...
очень, очень, очень полезная ссылка ...
Johnmen (2005-01-26 09:24:00) [2]>Rule © (25.01.05 17:49) [3]
Такое в принципе работать не будет.
см. http://www.krista.ru/ib/proc-join.html
TohaNik (2005-01-25 20:22:00) [3]С параметрами точно можно,иначе смысл...
может так:
select c.*, d.* from naklad c, pereuchettovaronnaklad(c.id) d
where c.id = ?c.id
или
select d.* from pereuchettovaronnaklad(c.id) d
а из процедуры данные по naklad передавать
Rule (2005-01-25 17:49:00) [4]TohaNik © (24.01.05 20:02) [2]
select c.*, d.* from naklad c, pereuchettovaronnaklad(c.id) d
я писал
TohaNik (2005-01-24 20:02:00) [5]Да можно
А весь запрос увидеть?
Rule (2005-01-24 19:52:00) [6]ну я в принципе решил этот вопрос решается, если убрать входной параметр в процедуре и сделать чтоб процедура возвращала не только товар по нужной накладной, а по всем накладным и плюс поле номера наклданой ..., и связать их по этому полю ....
ну а как с параметрами, неужто нельзя ?