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.