Avatar billede razmuz_dk Nybegynder
05. marts 2007 - 13:09 Der er 3 kommentarer

Kan stored procedures returnere result sets?

Mit spørgsmål er egentlig meget enkelt som titlen antyder.

Grunden til jeg spøger, at jeg i mit nuværende opsæt skal køre TO queries for at finde ud af hvor mange nye mails en given bruger har:

CALL getNewMails(1, @mails);

SELECT @mails;

... så mit spørgsmål er: er det virkelig nødvendigt med disse to kald? Det kunne jo være smart hvis bare kunne skrive:
CALL getNewMails(1);

... som så ville returnere et resultset.

Hvad gør I ? Hvad er nemmest? Andre alternativer?

På forhånd tak....

- Rasmus
Avatar billede jbone1 Nybegynder
07. marts 2007 - 23:27 #1
Ja det kan du sagtens... (du kan også returnere flere recordsets)
Eksempel på noget lign. det du vil...

Bemærk at det hele er kapslet ind i PREPARE statement syntaks... det er ikke nødvendigt.. men giver dig f.eks. mulighed for at begrænse recordsettet med limit x,x
....

CREATE DEFINER=`root`@`%` PROCEDURE `proc_get_mails`(IN lim integer signed,IN off integer signed)
    READS SQL DATA
BEGIN
SET @skip=off; SET @numrows=lim;
PREPARE STMT FROM 'select * from `emails`
where
order by `dato` desc
limit ?,?';
EXECUTE STMT USING @skip, @numrows;
END
Avatar billede razmuz_dk Nybegynder
08. marts 2007 - 20:26 #2
Okay - jeg havde vidst misforstået OUT-keywordet :-) Men har fået det til at virke.

Smid et svar :-)
Avatar billede jbone1 Nybegynder
09. marts 2007 - 06:39 #3
:)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester