Lazarus 3.2 (2024.02.28.)
Letöltés

  • Oldal:
  • 1

TÉMA:

Válasz:SQLdb / TSQLScript és a tárolt eljárások. 2012 ápr. 04 21:03 #1006

  • szeti
  • szeti profilkép Témaindító
  • Haladó forumozó
  • Haladó forumozó
  • Hozzászólások: 39
  • Köszönetek: 1
Nos végül sikerült megoldani a kérdést, de úgy tűnik az SQLdb csomag TSQLScript komponense a Firebird 2.1 esetén nem tökéletes, vagy csak nekem nem sikerült kinyomozni a megoldást. Ezzel szemben a ZEOSdbo csomag ZSQLProcess komponense az összes scriptemet hiba nélkül futtatta le. Igaz a tárolt eljárások rögzítésénél a : -ot meg kell duplázni, ellenkező esetben ugyanazt a hibát produkálja, mint a már említett TSQLScript. Sajnos a TSQLScript ezzel a módszerrel sem dolgozik helyesen.

Pl:
SET TERM ^ ; 
 
CREATE PROCEDURE SPSZLAKARTON ( 
    precid bigint, 
    pcikksz bigint, 
    pssz integer, 
    praktar integer) 
returns (valasz varchar(2)) 
as 
BEGIN 
 
insert into krszlakart (recid,ssz,cikksz,raktar) 
values (::precid,::pssz,::pcikksz,::praktar); 
 
valasz='OK'; 
suspend; 
 
END^ 
 
SET TERM ; ^

Válasz:SQLdb / TSQLScript és a tárolt eljárások. 2012 ápr. 03 07:44 #1005

  • szeti
  • szeti profilkép Témaindító
  • Haladó forumozó
  • Haladó forumozó
  • Hozzászólások: 39
  • Köszönetek: 1
Igen köszi ezt már próbáltam, de sajnos nem vezetett sikerre. Ugyanezt a scriptet egy IB Expert-ben futtatva hibátlan eredményt kapok, de valamiért a TSQLScipt ezt a szintaktikát nem fogadja el sem 'create procedure', sem 'alter procedure' esetében.

Válasz:SQLdb / TSQLScript és a tárolt eljárások. 2012 ápr. 02 21:41 #1004

  • pernyei
  • pernyei profilkép
  • Haladó forumozó
  • Haladó forumozó
  • In Lazarus We Trust
  • Hozzászólások: 54
  • Köszönetek: 1
Szia!

Én ugyan Power Builder-ben programozok, és Informix adatbázissal, de van egy-két alaki hasonlóság, ami elgondolkodtat.
PB-ben a datawindow-kban a paraméterekre ugyan ":" kezdettel kell hivatkozni, ahogy te is írod a kódban, de magukban a tárolt eljárásokban és az azokat létrehozó scriptekben nem.
Csak halvány felvetés (nem ismerem a Firebird-öt), de nem lehet, hogy el kellene hagynod a ":"-ot?
Elnézést, ha nagy hülyeséget írtam.

SQLdb / TSQLScript és a tárolt eljárások. 2012 ápr. 02 20:50 #1002

  • szeti
  • szeti profilkép Témaindító
  • Haladó forumozó
  • Haladó forumozó
  • Hozzászólások: 39
  • Köszönetek: 1
Üdv Mindenkinek!
Az SQLdb csomag TSQLScript komponensével kapcsolatban szeretnék segítséget kérni. Sajnos a neten nem találtam igazán jó anyagot a témával kapcsolatban. Firebird 2.1 adatbázis alatt futtattam scripteket, melyek a tárolt eljárások létrehozása kivételével tökéletesen lefutottak. Táblák, generátorok, triggerek, indexek stb... hibátlanul létrejöttek, ugyanakkor az eljárások definiálása során az alábbi hibát tapasztaltam:
Pl. SQL Script:
SET TERM ^ ;
 
CREATE PROCEDURE SPSZLAKARTON (
    precid bigint,
    pcikksz bigint,
    pssz integer,
    praktar integer)
returns (valasz varchar(2))
as
BEGIN
 
insert into krszlakart (recid,ssz,cikksz,raktar)
values (:precid,:pssz,:pcikksz,:praktar);
 
valasz='OK';
suspend;
 
END^
 
SET TERM ; ^

Az eljárást létrehozza, ugyanakkor nem értelmezi a :-al megjelölt input változókat, így az eljárások között csak egy ismeretlen ? változóval jelöli meg azokat.

Így:
BEGIN
insert into krszlakart (recid,ssz,cikksz,raktar)
values (?,?,?,?);
valasz='OK';
suspend;
END^

Természetesen ez meghívása során a bejövő változókat nem tudja használni így hibával leáll a hívó program. Abban reménykedem van valakinek valamiféle információja, hogyan kell a TSQLScript-et eljárások tárolására meghívni. Köszönöm.

  • Oldal:
  • 1