13. januar 2004 - 00:36Der er
4 kommentarer og 1 løsning
Eksekvere en funktion
Hej. Jeg har en meget lille funktion, problemet er at jeg ikke er helt sikker på hvordan den skal eksekveres. Jeg kan få afviklet den ved at bruge select fun_OpretAukt(); men det holder ingen steder, da det er en insert-funktion, ikke select.
CREATE OR REPLACE FUNCTION fun_OpretAuktion (int,varchar,float,timestamp) RETURNS boolean AS ' DECLARE saelgerid ALIAS FOR $1; navn ALIAS FOR $2; mindstepris ALIAS FOR $3; udloebsdato ALIAS FOR $4; postnr int; BEGIN SELECT bru_postnr INTO postnr FROM tbl_bruger WHERE bru_id=1; IF NOT FOUND THEN return false; ELSE INSERT INTO tbl_auktion(auk_saelgerid,auk_navn,auk_mindstepris,auk_udloebsdato,auk_postnr) VALUES(saelgerid,navn,mindstepris,udloebsdato,postnr); RETURN true; END IF; END; ' LANGUAGE 'plpgsql';
Det holder da alle steder, hvis du læser din kode igennem returnerer din funktion jo også en boolean som du selecter når du kalder din funktion. En funktion i PostGreSQL skal altid returnere en værdi.
Jeg går ud fra du tidligere har arbejdet med f. eks. MS SQL server?
Jeg tror at du misforstår mig. Man kunne forestille sig at en function f.eks. indeholdte fem insert-sætninger. Når en sådanne "insert-function" skulle eksekveres ville jeg ikke umiddelbart ønske at bruge select func_fem(); Jeg har ikke arbejdet med msSQL før, men dog læst nogle småting omkring stored procedures, og der så jeg bl.a. exec sp_func(asd,asd,asd); Det er noget i den retning jeg søger.
Det eksempel du selv giver med EXEC PROC, var egentlig det der ledte mig på tanken om at du måske tidligere havde arbejdet med MS SQL SERVER.
Kigger du på din stored procedure returnerer du jo én værdi - en boolean, hvis det er sådan at du ikke skal bruge denne værdi, kan din funktion kaldes med
Det er selvfølgelig altid rart at kunne sikre sig at funktionen blev udført som forventet - så på det punkt er select func() fint. Men det hele koger ned til, at det var mest en detajle der gik mig på - men nok om det.
Jeg har set lidt på PERFORM men jeg kan ikke umiddelbart få den til at virke.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.