sql >> Database >  >> RDS >> Oracle

NAME_IN ingebouwd in Oracle D2k Forms

NAME_IN ingebouwd in Oracle D2k Forms

Beschrijving
Retourneert de waarde van de aangegeven variabele.
De geretourneerde waarde heeft de vorm van een tekenreeks. U kunt echter NAME_IN gebruiken om
getallen en datums als tekenreeksen te retourneren en die reeksen vervolgens naar de juiste gegevenstypen te converteren. U
kunt de geretourneerde waarde gebruiken zoals u elke waarde in een uitvoerbare instructie zou gebruiken.
Als u de functie NAME_IN nest, evalueert Form Builder de individuele NAME_IN-functies van de
binnenste naar de buitenste één.
Syntaxis
FUNCTION NAME_IN
(variable_name VARCHAR2);
Ingebouwde type onbeperkte functie
Retourneert VARCHAR2
Ga naar de querymodus ja
Parameters
variabele_name Specificeert een geldige variabele of tekstitem. Het gegevenstype van de naam is
VARCHAR2.
Gebruiksopmerkingen
Als de geretourneerde waarde een datumtekenreeks is, gebruikt NAME_IN het formaatmasker dat is opgegeven in de eigenschap
BUILTIN_DATE_FORMAT. Als de eigenschap DATE_FORMAT_COMPATIBILITY_MODE
is ingesteld op 4,5, wordt de standaard Amerikaanse indeling gebruikt om de geretourneerde tekenreeks op te maken.
voorbeelden NAME_IN
/*
** Ingebouwd:NAME_IN
** Voorbeeld:eenvoudige implementatie van een Last-In-First-Out
**-stackmechanisme met behulp van globale variabelen.
** Voor elke benoemde stack wijst een globale variabele
** GLOBAL._PTR naar het grootste
** element op de stack. PUSH verhoogt deze
** waarde als nieuwe elementen worden toegevoegd. Waarden
** geduwd op of POP'ed uit de benoemde stapel zijn
** feitelijk opgeslagen in GLOBAL-variabelen van een
** handig gevormde naam:GLOBAL.nnn
** waarbij 'nnn' het nummer is van het element op de
** stapel.
**
** Gebruik:
** Push('MYSTACKNAME' , '1');
** Push('MYSTACKNAME', '2');
**
** str_var :=Pop('MYSTACKNAME'); -- Krijgt ’2’
** str_var :=Pop(’MYSTACKNAME’); -- Krijgt ’1’
** str_var :=Pop(’MYSTACKNAME’); -- Krijgt ’EOS’
**
*/
PROCEDURE Push ( the_stackname VARCHAR2,
the_value VARCHAR2 ) IS
ptr_name VARCHAR2(40); -- De pointernaam van deze stack
prefix VARCHAR2(40); -- Algemeen voorvoegsel voor opslag-vars
elt_name VARCHAR2(40); -- Naam van opslagelement
new_idx VARCHAR2(4); -- Nieuwe stackpointerwaarde
BEGIN
/*
** Voor elke benoemde stack waarnaar we verwijzen, de globale
** variabelen die worden gebruikt voor het opslaan van de stackwaarden en de
** de aanwijzer van de stapel begint allemaal met een algemeen voorvoegsel:
** GLOBAL.
*/
voorvoegsel :='GLOBAL.' || the_stackname;
/*
** De pointer van deze benoemde stack bevindt zich in
** GLOBAL._PTR Onthoud dat dit de *name*
** van de pointer is.
*/
ptr_name :=prefix || '_PTR';
/*
** Initialiseer de stapelaanwijzer met een standaardwaarde van
** nul als de stapelaanwijzer niet eerder bestond, dwz
** de GLOBALE ._PTR moest nog worden aangemaakt.
*/
Default_Value( '0', ptr_name );
/*
** Aangezien we een nieuw element op de stapel,
** verhoog de stapelaanwijzer om de positie van dit nieuwe
** element weer te geven. Onthoud dat GLOBAL-variabelen
** altijd van het type VARCHAR2 zijn, dus we moeten ze TO_NUMBER
** converteren voor berekeningen.
*/
new_idx :=TO_CHAR( TO_NUMBER( Name_In ( ptr_name ) ) + 1 );
Copy( new_idx , ptr_name );
/*
** Bepaal de naam van de globale variabele die
** de doorgegeven waarde zal opslaan in, GLOBAL..
** Dit is gewoon het voorvoegsel dat is samengevoegd met het nieuwe indexnummer
** dat we zojuist hierboven hebben berekend.
*/
elt_name :=prefix||new_idx;
Copy( the_value , elt_name );
END;
FUNCTION Pop ( the_stackname VARCHAR2)
RETURN VARCHAR2 IS
ptr_name VARCHAR2(40); -- De pointernaam van deze stack
prefix VARCHAR2(40); -- Algemeen voorvoegsel voor opslag-vars
elt_name VARCHAR2(40); -- Naam van opslagelement
new_idx VARCHAR2(4); -- Nieuwe stackpointerwaarde
cur_idx VARCHAR2(4); -- Huidige stackpointerwaarde
the_val VARCHAR2(255);
EMPTY_STACK CONSTANT VARCHAR2(3) :='EOS';
NO_SUCH_STACK CONSTANT VARCHAR2(3) :='NSS';
BEGIN
/*
** Voor elke benoemde stapel waarnaar we verwijzen, beginnen de globale
**-variabelen die worden gebruikt voor het opslaan van de waarden van de stapel en de
**-aanwijzer van de stapel allemaal met een algemeen voorvoegsel:
** GLOBAL.
*/
voorvoegsel :='GLOBAL.' || the_stackname;
/*
** De pointer van deze benoemde stack bevindt zich in
** GLOBAL._PTR Onthoud dat dit de *name*
** van de pointer is.
*/
ptr_name :=prefix || ’_PTR’;
/*
** Forceer een standaardwaarde van NULL zodat we kunnen testen of de
**-aanwijzer bestaat (als een globale variabele). Als het niet
** bestaat, kunnen we zo meteen testen op de NULL, en
** de typische fout vermijden als gevolg van het verwijzen naar niet-bestaande
** globale variabelen.
*/
Default_Value( NULL, ptr_name );
/*
** Als de *waarde* in de aanwijzer NULL is, dan
** mag de aanwijzer niet bestonden al vóór de
** Default_Value-instructie hierboven. Retourneer in dit geval de constante
** NO_SUCH_STACK en wis de globale
** variabele die de Default_Value impliciet heeft gemaakt.
*/
IF Name_In( ptr_name ) IS NULL THEN
the_val :=NO_SUCH_STACK;
Wissen( ptr_name );
/*
** Anders bestaat de genoemde stapel al. Haal de
** index van het grootste stack-element uit de
** pointer van deze stack.
*/
ELSE
cur_idx :=Name_In( ptr_name );
/*
** Als de index nul is, is de benoemde stapel al
** leeg, dus retourneer de constante EMPTY_STACK, en laat
** de aanwijzer van de stapel rond voor later gebruik, dwz niet
** ERASE it.
**
** Merk op dat een stapel alleen leeg kan zijn als sommige waarden
** zijn geduwd en dan alle waarden vervolgens
** POP'ed. Als er nooit waarden op deze benoemde
**-stack zijn geduwd, zou er geen gekoppelde stack-pointer zijn
** gemaakt, en we zouden die fout markeren met de
** NO_SUCH_STACK geval hierboven.
*/
IF cur_idx ='0' THEN
the_val :=EMPTY_STACK;
/*
** Als de index niet nul is, dan :
** (1) Bepaal de naam van de globale variabele in
** waarin de te POP'en waarde wordt opgeslagen,
** GLOBAL.
** (2) Haal de waarde van het (cur_idx)-th element naar
** return
** (3) Verlaag de stackpointer
** (4) Wissen de globale variabele die werd gebruikt voor
** waardeopslag
*/
ELSE
elt_name:=prefix || cur_idx;
the_val :=Name_In( elt_name );
new_idx :=TO_CHAR( TO_NUMBER( Name_In(ptr_name) ) - 1 );
Copy( new_idx , ptr_name );
Wissen ( elt_name );
END IF;
END IF;
RETURN the_val;
END;

  1. Hoe een string in SQLite te trimmen

  2. PostgreSQL INSERT ON CONFLICT UPDATE (upsert) gebruik alle uitgesloten waarden

  3. Strings samenvoegen in SQLite

  4. Verbinding maken met PostgreSQL in IRI Workbench