CREATE OR ALTER PROCEDURE GEN_SPIS
returns (
nazwa varchar(40) collate pxw_plk,
waga numeric(15,2),
ilosc integer,
cena numeric(15,2),
cg numeric(15,2),
cs numeric(15,2),
jm varchar(10) collate pxw_plk,
zakup numeric(15,2),
mg integer,
produkt integer)
AS
declare variable grupa integer;
declare variable met integer;
declare variable sz integer;
begin
CREATE VIEW stanm AS SELECT * FROM spis_poz ;
FOR SELECT m.ilosc , m.waga, m.cena, m.cg,m.cs, g.id_grupy, pp.id_produkty_metal, kr.szlachetny, m.id_produktu FROM sklepy_stan_m m
LEFT JOIN produkty pp ON m.id_produktu=pp.id
LEFT JOIN gruptow_type g ON pp.id_produkty_gruptow_type=g.id
LEFT JOIN produkty_kamien_rodzaj kr ON pp.id_produkty_kamien_rodzaj=kr.id
WHERE m.miesiac=12 AND m.rok=2015 AND m.id_produktu<>6487 AND m.id_produktu<>6484 AND m.id_produktu<>6485 AND m.ilosc<>0 ORDER BY m.ilosc
INTO :ilosc, :waga,:cena,:cg, :cs, :grupa, :met, :sz ,:produkt
do
begin
zakup = 0;
nazwa = '';
jm = '';
mg = 1;
IF (grupa = 2) then mg = 1;
IF (sz = 1 AND (grupa = 3 OR grupa = 4)) then mg = 6;
IF (sz = 0 AND (grupa = 3 OR grupa = 4)) then mg = 5;
IF (grupa = 0 AND met = 14) then mg =2;
IF (grupa = 0 AND met = 7) then mg = 4;
IF (grupa = 0 AND met = 9) then mg = 10;
IF (grupa = 0 AND met = 12) then mg = 3;
SELECT first 1 p.cena, p.jm, p.nazwa FROM stanm p WHERE p.jm='g' AND p.cena>=:cg*0.95 AND p.cena<=:cg*1.05 AND p.grupa=:mg AND p.ilosc > 0 ORDER BY p.ilosc DESC INTO:zakup, :jm, :nazwa;
IF (zakup = 0) then
begin
SELECT first 1 p.cena , p.jm, p.nazwa FROM stanm p WHERE p.jm='g' AND p.cena>=:cg*0.9 AND p.cena<=:cg*1.1 AND p.grupa=:mg AND p.ilosc > 0 ORDER BY p.ilosc DESC INTO:zakup, :jm, :nazwa;
end
IF (zakup = 0) then
begin
SELECT first 1 p.cena , p.jm, p.nazwa FROM stanm p WHERE p.jm='szt' AND p.cena>=:cs*0.9 AND p.cena<=:cs*1.1 AND p.grupa=:mg AND p.ilosc > 0 ORDER BY p.ilosc DESC INTO:zakup, :jm, :nazwa;
end
IF (zakup = 0) then
begin
SELECT first 1 p.cena , p.jm, p.nazwa FROM stanm p WHERE p.jm='g' AND p.cena>=:cg*0.8 AND p.cena<=:cg*1.2 AND p.grupa=:mg AND p.ilosc > 0 ORDER BY p.ilosc DESC INTO:zakup, :jm, :nazwa;
end
IF (zakup = 0) then
begin
SELECT first 1 p.cena , p.jm, p.nazwa FROM stanm p WHERE p.jm='szt' AND p.cena<:cs AND p.grupa=:mg AND p.ilosc > 0 ORDER BY p.ilosc DESC INTO:zakup, :jm, :nazwa;
end
IF (zakup = 0) then
begin
SELECT first 1 p.cena , p.jm, p.nazwa FROM stanm p WHERE p.jm='g' AND p.cena<:cg AND p.grupa=:mg AND p.ilosc > 0 ORDER BY p.ilosc DESC INTO:zakup, :jm, :nazwa;
end
IF (zakup = 0) then
begin
SELECT first 1 p.cena , p.jm, p.nazwa FROM stanm p WHERE p.jm='szt' AND p.cena>:cs AND p.cena<:cena AND p.grupa=:mg AND p.ilosc > 0 ORDER BY p.ilosc INTO:zakup, :jm, :nazwa;
end
suspend;
end
end
dostaje błąd , czyżby firebird 2.5 nie obsługiwał w procedurach wirtualnych tabel ?
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 18, COLUMN 1.
CREATE.
Ten post edytował icemanwlkp 17.06.2016, 14:01:47