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
Kategori
Computerworld tilbyder specialiserede kurser i database-management

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