Avatar billede diyar Nybegynder
09. juli 2008 - 11:13 Der er 9 kommentarer og
1 løsning

Function eller Procedure?

Jeg har en tabel der har en primær nøgle som indeholder 2 værdier, et tal, og en dato, jeg vil gerne have lavet en function eller procedure der returnere begge de to værdiger, værdierne må godt returneres som varchar. hvordan gøre jeg det?

SELECT * FROM TABLE_NAME;

DATO            TAL
08-07-2002    7
Avatar billede pnielsen Nybegynder
09. juli 2008 - 11:24 #1
Skal de alle sættes sammen og gives tilbage i en kommastreng?
Så ville jeg nok vælge at returnere i clob - hvis du har mange data !

Men ca. sådan her er vel nogenlunde - (er ikke testet !)

CREATE OR REPLACE FUNCTION return_value () RETURN varchar2 IS
tmpVar varchar2 := '';
ny number := 1;
cursor test is SELECT * FROM TABLE_NAME;
BEGIN

open test;

loop
FETCH test INTO cur_rec;
  EXIT WHEN test%NOTFOUND;

if  ny < 1 then
tmpVar := (tmpvar||' , ');
end if;

tmpVar :=tmpvar||'(cur_rec.dato||cur_rec.tal) ';

ny := ny-1 ;

end loop;
end if;
  RETURN tmpVar;
  EXCEPTION
    WHEN NO_DATA_FOUND THEN
  return tmpVar;
    WHEN OTHERS THEN
return tmpVar;
END;
/
Avatar billede teepee Nybegynder
09. juli 2008 - 12:55 #2
skal du bare returnere en enkelt rækkes værdier? Normalt kan du blot bruge en procedure hvor du benytter IN OUT parametre:

create procedure test (p_pk in integer, p_kol1 in out varchar2, p_kol2 in out varchar2)
is
begin
  select kol1, kol2
  into p_kol1, p_kol2
  from table1
  where pk = p_pk;
end;
/
Avatar billede diyar Nybegynder
09. juli 2008 - 12:59 #3
Det kræver at man har en parameter i return_value() Parentesen.  hvad skal jeg have der?
Avatar billede diyar Nybegynder
09. juli 2008 - 13:08 #4
Til teepee, hvad er pk?
Avatar billede pnielsen Nybegynder
09. juli 2008 - 13:23 #5
teepee's eksempel tager udgangspunkt i at du vil have en enkelt række ud - så pk er den kolonne du vil finde p_pk værdien i.

Du bliver nødt til at forklare lidt mere præcist hvad du ønsker ud, for at vi kan svare konkret.
Avatar billede diyar Nybegynder
09. juli 2008 - 13:34 #6
som sagt jeg har primær nøgle som indeholder både Dato og Tal, jeg vil gerne lave en function eller procedure der kan returnere værdierne af Dato, og Tal (08-07-2002,7) i en streng f.eks. Så kan jeg bruger funktionen/Proceduren i en Trigger som jeg har lavt.
Avatar billede pnielsen Nybegynder
09. juli 2008 - 13:50 #7
værdierne ? Det vil sige alle rækker skal være på listeform ?
(08-07-2002,7, 08-07-2003,8,09-07-2002,9 etc..)

Eller skal du kun have en værdi ud som teepee har lavet et eksempel på? Og Hvad identificere så den række?
Avatar billede pnielsen Nybegynder
30. juli 2008 - 12:47 #8
fik du løst det?
Avatar billede diyar Nybegynder
30. juli 2008 - 13:03 #9
ja, men på en helt anden måde
Avatar billede diyar Nybegynder
03. oktober 2008 - 15:07 #10
det hjalp ikke
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