sql >> Database teknologi >  >> RDS >> Oracle

NAME_IN indbygget i Oracle D2k Forms

NAME_IN indbygget i Oracle D2k Forms

Beskrivelse
Returnerer værdien af ​​den angivne variabel.
Den returnerede værdi er i form af en tegnstreng. Du kan dog bruge NAME_IN til at returnere
tal og datoer som tegnstrenge og derefter konvertere disse strenge til de relevante datatyper. Du
kan bruge den returnerede værdi, som du ville bruge enhver værdi i en eksekverbar sætning.
Hvis du indlejrer funktionen NAME_IN, evaluerer Form Builder de individuelle NAME_IN-funktioner fra den
inderste til den yderste en.
Syntaks
FUNCTION NAME_IN
(variable_name VARCHAR2);
Indbygget Type ubegrænset funktion
Returnerer VARCHAR2
Indtast forespørgselstilstand ja
Parameters
variable_name Specificerer en gyldig variabel eller tekstelement. Navnets datatype er
VARCHAR2.
Noter om brug
Hvis den returnerede værdi er en datostreng, vil NAME_IN bruge formatmasken angivet i egenskaben
BUILTIN_DATE_FORMAT. Hvis egenskaben DATE_FORMAT_COMPATIBILITY_MODE
er indstillet til 4.5, bruges det amerikanske standardformat til at formatere den returnerede streng.
Eksempler på NAME_IN
/*
** Indbygget:NAME_IN
** Eksempel:Simpel implementering af en Last-In-First-Out
** stackmekanisme ved hjælp af globale variabler.
** For hver navngivet stak, en global variabel
** GLOBAL._PTR peger på det største
** element på stakken. PUSH øger denne
** værdi, efterhånden som nye elementer tilføjes. Værdier
** PUSH'et til eller POP'et fra den navngivne stak er
** faktisk gemt i GLOBAL variabler af et
** bekvemt udformet navn:GLOBAL.nnn
** hvor 'nnn' er nummeret på elementet på
** stakken.
**
** Anvendelse:
** Push('MYSTACKNAME' , '1');
** Push('MYSTACKNAME', '2');
**
** str_var :=Pop('MYSTACKNAME'); -- Får ’2’
** str_var :=Pop(’MYSTACKNAME’); -- Får ’1’
** str_var :=Pop(’MYSTACKNAME’); -- Får ’EOS’
**
*/
PROCEDURE Push ( staknavnet VARCHAR2,
værdien VARCHAR2 ) IS
ptr_navn VARCHAR2(40); -- Denne staks markørnavn
præfiks VARCHAR2(40); -- Fælles præfiks for lagring vars
elt_name VARCHAR2(40); -- Navn på lagerelement
new_idx VARCHAR2(4); -- Ny stak-pointerværdi
BEGIN
/*
** For enhver navngiven stak, som vi refererer til, de globale
**-variabler, der bruges til at gemme stakkens værdier og
** stakkens markør begynder alle med et fælles præfiks:
** GLOBAL.
*/
præfiks :='GLOBAL.' || the_stackname;
/*
** Denne navngivne staks pointer ligger i
** GLOBAL._PTR Husk at dette er *navnet*
** på markøren.
*/
ptr_name :=præfiks || '_PTR';
/*
** Initialiser stakmarkøren med en standardværdi på
** nul, hvis stakmarkøren ikke eksisterede tidligere, dvs.
** GLOBAL ._PTR var endnu ikke oprettet.
*/
Default_Value( '0', ptr_name );
/*
** Da vi PUSH'er en nyt element på stakken,
** forøg stakmarkøren for at afspejle dette nye
** elements position. Husk at GLOBALE variable er
** altid af typen VARCHAR2, så vi skal konvertere dem TO_NUMBER
** før enhver beregning.
*/
new_idx :=TO_CHAR( TO_NUMBER( Name_In) ( ptr_name ) ) + 1 );
Copy( new_idx , ptr_name );
/*
** Bestem navnet på den globale variabel, som skal
** gemme den overførte værdi in, GLOBAL..
** Dette er simpelthen præfikset sammenkædet med det nye indeks
**-tal, vi lige har beregnet ovenfor.
*/
elt_name :=præfiks||new_idx;
Copy( the_value , elt_name );
END;
FUNCTION Pop ( the_stackname VARCHAR2)
RETURN VARCHAR2 IS
ptr_name VARCHAR2(40); -- Denne staks markørnavn
præfiks VARCHAR2(40); -- Fælles præfiks for lagring vars
elt_name VARCHAR2(40); -- Navn på lagerelement
new_idx VARCHAR2(4); -- Ny stak pointerværdi
cur_idx VARCHAR2(4); -- Aktuel stak pointerværdi
the_val VARCHAR2(255);
EMPTY_STACK CONSTANT VARCHAR2(3) :='EOS';
NO_SUCH_STACK CONSTANT VARCHAR2(3) :='NSS';
BEGIN
/*
** For enhver navngiven stak, som vi refererer til, begynder de globale
** variabler, der bruges til at gemme stakkens værdier og
** stakkens pointer. med et fælles præfiks:
** GLOBAL.
*/
præfiks :='GLOBAL.' || the_stackname;
/*
** Denne navngivne staks pointer ligger i
** GLOBAL._PTR Husk at dette er *navnet*
** på markøren.
*/
ptr_name :=præfiks || ’_PTR’;
/*
** Tving en standardværdi på NULL, så vi kan teste om
**-markøren findes (som en global variabel). Hvis det ikke
** eksisterer, kan vi om et øjeblik teste for NULL og undgå
** den typiske fejl på grund af at henvise til ikke-eksisterende
** globale variabler.
*/
Default_Value( NULL, ptr_name );
/*
** Hvis *værdien* i markøren er NULL, må
** markøren ikke har eksisteret før
** Default_Value-erklæringen ovenfor. Returner konstanten
** NO_SUCH_STACK i dette tilfælde og slet den globale
** variabel, som standardværdien implicit skabte.
*/
HVIS Name_In( ptr_name ) ER NULL SÅ
the_val :=NO_SUCH_STACK;
Erase( ptr_name );
/*
** Ellers eksisterer den navngivne stak allerede. Hent
** indekset for det største stakelement fra denne staks
** pointer.
*/
ELSE
cur_idx :=Name_In( ptr_name );
/*
** Hvis indekset er nul, så er den navngivne stak allerede
** tom, så returner konstanten EMPTY_STACK, og lad
** stakkens markør til senere brug, dvs. ikke
** SLETT den.
**
** Bemærk, at en stak kun kan være tom, hvis nogle værdier
** er blevet PUSH'et og så alle værdier efterfølgende
** POP'ed. Hvis ingen værdier nogensinde blev PUSH'et på denne navngivne
** stack, ville der ikke være oprettet nogen tilknyttet stackpointer
**, og vi ville markere denne fejl med
** NO_SUCH_STACK tilfælde ovenfor.
*/
HVIS cur_idx ='0' SÅ
the_val :=EMPTY_STACK;
/*
** Hvis indekset ikke er nul, så :
** (1) Bestem navnet på den globale variabel i
** som værdien, der skal POP'ed er gemt,
** GLOBAL.
** (2) Få værdien af ​​elementet (cur_idx)-th for at
** returnere
** (3) Formindsk stakmarkøren
** (4) Slet den globale variabel som blev brugt til
** værdilagring
*/
ELSE
elt_navn:=præfiks || cur_idx;
the_val :=Name_In( elt_name );
new_idx :=TO_CHAR( TO_NUMBER( Name_In(ptr_name) ) - 1 );
Kopier( new_idx , ptr_name );
Slet ( elt_name );
END IF;
END IF;
RETURN the_val;
END;

  1. Sådan finder du navnet på en begrænsning i Oracle

  2. SÅDAN:Kør planlagte opgaver med Microsoft Access

  3. Hurtigere måde at indsætte, via script, i Oracle?

  4. Oracle Big Data SQL