Avatar billede roo104 Nybegynder
04. juni 2003 - 22:30 Der er 5 kommentarer og
2 løsninger

Procedure med flere outputs

Hvodan får man en procedure eller noget ligende til at retunere flere outputs. Jeg ved ikke hvor mange der kommer hver gang. Jeg havde overvejet lidt at aflevere resultaterne i et varray, men hvordan ville i gøre ?

Jeg har en procedure som fint nok skriver ud i SQL*Plus, men jeg skal have afleveret data til et ASP dokument.

create or replace procedure getvernum(name in varchar2) is
begin
stats varray(2) of number(10);
declare cursor getver is
    select b.browser.browserversion as bver, count(b.browser.browserversion) numver
    from browser b where b.browser.browsername like 'Int%'
    group by b.browser.browserversion
    order by b.browser.browserversion desc;
begin

for getver_rec in getver
    loop
        dbms_output.put_line('Der er '||getver_rec.numver||' der bruger version '||getver_rec.bver);
    end loop;
return stats;
end;
end;
/

Håber der er en der hjælpe.
Avatar billede roo104 Nybegynder
04. juni 2003 - 22:32 #1
linje 3 og 16 skal i lige se bort fra
Avatar billede miracon Nybegynder
04. juni 2003 - 22:46 #2
create or replace procedure getvernum(name in varchar2,p_out in out type) is
.....
hvor type kan være varchar2 eller hvad du måtte ønske.
p_out tildeles så bare en værdi i proceduren.
Avatar billede roo104 Nybegynder
04. juni 2003 - 23:07 #3
ok, er nu nået så langt her:

create or replace procedure getvernum(name_in in varchar2, bversion_out out number, bnum_out out number) is
begin
declare cursor getver is
    select b.browser.browserversion as bver, count(b.browser.browserversion) numver
    from browser b where b.browser.browsername = name_in
    group by b.browser.browserversion
    order by b.browser.browserversion desc;
begin

for getver_rec in getver
    loop
    bversion_out := getver_rec.numver;
        bnum_out := getver_rec.numver;
    end loop;
end;
end;
/

men når jeg vil køre den siger den forkert antal eller typer af argumenter i kald til 'GETVERNUM'

jeg kalder den sådan her execute getvernum('Mozilla');
Avatar billede roo104 Nybegynder
04. juni 2003 - 23:08 #4
Den skal jo gerne returenere getver_rec.numver og getver_rec.numver for hver post den har fundet i cursoren
Avatar billede miracon Nybegynder
05. juni 2003 - 08:22 #5
Definer variable og tag dem med i kaldet:
execute getvernum('Mozilla',v1,v2);
Disse kan læses efter kaldet. Variablerne skal i din situation så ikke være numbers men collections; se
http://download-east.oracle.com/docs/cd/B10501_01/appdev.920/a96624/05_colls.htm#1059
Avatar billede roo104 Nybegynder
05. juni 2003 - 10:04 #6
Kan du give et eksempel jeg lige kan køre af i SQL*Plus, bare med numbers

tabelle hvor funktionen skal knyttes til ser sådan her ud
CREATE OR REPLACE TYPE browser_ty AS OBJECT (
browsername varchar2(50),
browserversion varchar2(10),
osname varchar2(50),
member function GetNumBrow(name in varchar2) return number,
pragma restrict_references(getnumbrow,wnds));
/
CREATE TABLE browser (browserid number(10) PRIMARY KEY, browser browser_ty);
Avatar billede roo104 Nybegynder
11. juni 2003 - 14:02 #7
Nå lukker det er lige meget nu, du skal have lidt point, selv om jeg ikke helt fandt ud af det!
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