Avatar billede dl74 Nybegynder
19. juli 2005 - 14:58 Der er 5 kommentarer og
1 løsning

globale variabler i stored procedure

Kort forklaring
Kan jeg smage mig frem til om en global variabel er blevet declared i en stored proceure?

Langt forklaring
Jeg har brug for i en stored procedure at kunne afgøre om den er blevet kaldt fra en speciel form.
Jeg må tilføje parametre til denne stored procedure da det ikke er "vores", men kan gøre hvad jeg vil inde i proceduren.
Derfor tænkte jeg at det må være muligt at oprette en global variabel, når den navngivne form kalder proceduren og så afgøre inde i min stored procedure ud fra den globale variabel om den er blevet kaldt fra den pågældende form.

Det store spørgsmål er så bare hvordan gør jeg det
Jeg har forsøgt mig med "IF exist :global...", men det går ikke godt.
Avatar billede charlie37 Nybegynder
20. juli 2005 - 22:29 #1
Kan du ikke sætte den globale værdi til 0 eller -1 som standard, og så ændre den til 1 eller lign under ovenstående handling...
Avatar billede dl74 Nybegynder
21. juli 2005 - 08:38 #2
Nej for den kaster en ora fejl når jeg referer til en global variabel. Problemet er har jeg fundet ud af at jeg ikke befinder mig i forms og global er en forms builtin, så det kommer aldrig til at virke... Desværre. Jeg lukker sagen
Avatar billede qualjyn Nybegynder
22. juli 2005 - 13:54 #3
Det kan du faktisk godt - du kan kalde en package, og få den til at vedligeholde din globale variabel. Den lever hele vejen igennem din session.
Avatar billede dl74 Nybegynder
25. juli 2005 - 10:26 #4
Speak to me - qualjyn :-)
Det lyder meget interessant, vil det sige. jeg kan oprette en function i en package som vedligeholder en global variabel?

SÅ forestiller jeg mig en lf.show_detail(p_show BOOLEAN) function som kan kaldes fra min stored procedure, hvor den skal smage på om den globale variabel tidligere er blevet sat true af formen. MAO. skal min package.function kunne kaldes både med og uden en parameter. Formen kalder med parameter for at sætte den globale variabel true. Den "Stored procedure" kalder uden parameter for at spørge hvad den globale variabel er blevet sat til (hvad nu hvis den ikke er blevet sat? Hvis du kan lave sådan en til mig eller give directions, så jeg selv kan lave den er der 200 point hjemme til dig...
Avatar billede qualjyn Nybegynder
25. juli 2005 - 11:59 #5
det kan det:

create or replace package pck_test as
    procedure set_value(input boolean);
    function get_value return boolean;
end pck_test;

create or replace package body pck_test as
   
    internal boolean;

    procedure set_value(input boolean) as
    begin
        internal := input;
    end;
   
    function get_value return boolean as
    begin
        return internal;
    end;
end pck_test;

og så kan vi teste det :)

begin
  pck_test.set_value(true);
end;

begin
  if (pck_test.get_value() = true) then
    dbms_output.put_line('true');
  else
    dbms_output.put_line('false');
  end if;
end;

begin
    pck_test.set_value(false);
end;

begin
  if (pck_test.get_value() = true) then
    dbms_output.put_line('true');
  else
    dbms_output.put_line('false');
  end if;
end;

Så som du kan se, så kan du vedligeholde oplysninger i sessionen.
Avatar billede dl74 Nybegynder
25. juli 2005 - 15:36 #6
Det er jo genialt, det virker perfekt. Hvorfor kom jeg ikke selv op med den ide. det er jo pære simpelt. Jeg opretter ligesom sidst en tom case med samme titel som du kan besvare. Takker
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