sql >> Databasteknik >  >> RDS >> Oracle

NAME_IN inbyggt i Oracle D2k Forms

NAME_IN inbyggt i Oracle D2k Forms

Beskrivning
Returnerar värdet för den angivna variabeln.
Det returnerade värdet är i form av en teckensträng. Du kan dock använda NAME_IN för att returnera
siffror och datum som teckensträngar och sedan konvertera dessa strängar till lämpliga datatyper. Du
kan använda det returnerade värdet på samma sätt som du skulle använda vilket värde som helst i en körbar sats.
Om du kapslar funktionen NAME_IN, utvärderar Form Builder de individuella NAME_IN-funktionerna från den
innersta till den yttersta en.
Syntax
FUNCTION NAME_IN
(variabelnamn VARCHAR2);
Inbyggd typ av obegränsad funktion
Returnerar VARCHAR2
Gå in frågeläge ja
Parametrar
variabelnamn Anger en giltig variabel eller textobjekt. Namnets datatyp är
VARCHAR2.
Anmärkningar för användning
Om det returnerade värdet är en datumsträng kommer NAME_IN att använda formatmasken som anges i egenskapen
BUILTIN_DATE_FORMAT. Om egenskapen DATE_FORMAT_COMPATIBILITY_MODE
är inställd på 4.5 används det amerikanska standardformatet för att formatera den returnerade strängen.
EXEMPEL NAME_IN
/*
** Inbyggd:NAME_IN
** Exempel:Enkel implementering av en Last-In-First-Out
** stackmekanism med hjälp av globala variabler.
** För varje namngiven stack, en global variabel
** GLOBAL._PTR pekar på det största
** elementet i stacken. PUSH ökar detta
** värde när nya element läggs till. Värden
** PUSH'ade på eller POP'ade från den namngivna stacken är
** faktiskt lagrade i GLOBAL variabler av ett
** bekvämt format namn:GLOBAL.nnn
** där 'nnn' är numret på elementet i
**-stacken.
**
** Användning:
** 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’
**
*/
PROCEDUR Push ( stackennamnet VARCHAR2,
värdet VARCHAR2 ) IS
ptr_name VARCHAR2(40); -- Den här stapelns pekarnamn
prefix VARCHAR2(40); -- Vanligt prefix för lagring vars
elt_name VARCHAR2(40); -- Namn på lagringselement
new_idx VARCHAR2(4); -- Nytt stackpekarvärde
BEGIN
/*
** För alla namngivna stack som vi refererar till, de globala
**-variablerna som används för att lagra stackens värden och
** stackens pekare börjar alla med ett vanligt prefix:
** GLOBAL.
*/
prefix :='GLOBAL.' || the_stackname;
/*
** Den här namngivna stackens pekare finns i
** GLOBAL._PTR Kom ihåg att detta är *namnet*
** på pekaren.
*/
ptr_name :=prefix || '_PTR';
/*
** Initiera stackpekaren med standardvärdet
** noll om stackpekaren inte fanns tidigare, dvs
** GLOBAL ._PTR hade ännu inte skapats.
*/
Default_Value( '0', ptr_name );
/*
** Eftersom vi PUSH'ar en nytt element i stacken,
** öka stackpekaren för att återspegla det nya
** elementets position. Kom ihåg att GLOBALA variabler är
** alltid av typen VARCHAR2, så vi måste konvertera dem TO_NUMBER
** före eventuella beräkningar.
*/
new_idx :=TO_CHAR( TO_NUMBER( Name_In) ( ptr_name ) ) + 1 );
Copy( new_idx , ptr_name );
/*
** Bestäm namnet på den globala variabeln som kommer att
** lagra värdet som skickas in, GLOBAL..
** Detta är helt enkelt prefixet sammanlänkade med det nya index
**-numret som vi just beräknade ovan.
*/
elt_name :=prefix||new_idx;
Copy( the_value , elt_name );
END;
FUNCTION Pop ( the_stackname VARCHAR2)
RETURN VARCHAR2 IS
ptr_name VARCHAR2(40); -- Den här stapelns pekarnamn
prefix VARCHAR2(40); -- Vanligt prefix för lagring vars
elt_name VARCHAR2(40); -- Namn på lagringselement
new_idx VARCHAR2(4); -- Nytt stackpekarvärde
cur_idx VARCHAR2(4); -- Current stack pointer value
the_val VARCHAR2(255);
EMPTY_STACK CONSTANT VARCHAR2(3) :='EOS';
NO_SUCH_STACK CONSTANT VARCHAR2(3) :='NSS';
BEGIN
/*
** För alla namngivna stack som vi refererar till börjar de globala
**-variablerna som används för att lagra stackens värden och
**-stackens pekare med ett vanligt prefix:
** GLOBAL.
*/
prefix :='GLOBAL.' || the_stackname;
/*
** Den här namngivna stackens pekare finns i
** GLOBAL._PTR Kom ihåg att detta är *namnet*
** på pekaren.
*/
ptr_name :=prefix || ’_PTR’;
/*
** Tvinga fram ett standardvärde på NULL så att vi kan testa om pekaren
** finns (som en global variabel). Om det inte
** finns, kan vi testa om ett ögonblick för NULL och undvika
** det typiska felet som beror på att man refererar till icke-existerande
** globala variabler.
*/
Default_Value( NULL, ptr_name );
/*
** Om *värdet* som finns i pekaren är NULL, så får
** pekaren inte har funnits före
** Default_Value-satsen ovan. Returnera konstanten
** NO_SUCH_STACK i det här fallet och radera den globala
** variabeln som Default_Value implicit skapade.
*/
IF Name_In( ptr_name ) IS NULL THEN
the_val :=NO_SUCH_STACK;
Erase( ptr_name );
/*
** Annars finns den namngivna stacken redan. Hämta
**-indexet för det största stackelementet från denna stacks
**-pekare.
*/
ELSE
cur_idx :=Name_In( ptr_name );
/*
** Om indexet är noll, är den namngivna stacken redan
** tom, så returnera konstanten EMPTY_STACK och lämna
** stackens pekare för senare använd, dvs inte
** RADERA den.
**
** Observera att en stack bara kan vara tom om några värden
** har PUSH'ats och sedan alla värden efterföljande
** POP'ed. Om inga värden någonsin PUSH'ades på denna stack med namnet
**, skulle ingen associerad stackpekare ha skapats
**, och vi skulle flagga det felet med
** NO_SUCH_STACK fall ovan.
*/
OM cur_idx ='0' DÅ
the_val :=EMPTY_STACK;
/*
** Om indexet inte är noll, då :
** (1) Bestäm namnet på den globala variabeln i
** som värdet som ska POP'as lagras,
** GLOBAL.
** (2) Hämta värdet av elementet (cur_idx)-th för att
** returnera
** (3) Minska stackpekaren
** (4) Radera den globala variabeln som användes för
** värdelagring
*/
ELSE
elt_name:=prefix || cur_idx;
the_val :=Name_In( elt_name );
new_idx :=TO_CHAR( TO_NUMBER( Name_In(ptr_name) ) - 1 );
Kopiera( new_idx , ptr_name );
Radera ( elt_name );
END IF;
END IF;
RETURN the_val;
END;

  1. Skapa en trigger i Oracle Express

  2. Hur installerar man localdb separat?

  3. Hur man laddar JAR-fil i Oracle Database?

  4. Hur man ansluter SalesForce som en datakälla i Pyramid