sql >> Databáze >  >> RDS >> Oracle

NAME_IN vestavěný v Oracle D2k Forms

NAME_IN vestavěný v Oracle D2k Forms

Popis
Vrátí hodnotu uvedené proměnné.
Vrácená hodnota je ve formě znakového řetězce. Pomocí NAME_IN však můžete vrátit
čísla a data jako znakové řetězce a poté tyto řetězce převést na příslušné datové typy. Vrácenou hodnotu
můžete použít stejně, jako byste použili jakoukoli hodnotu ve spustitelném příkazu.
Pokud vnoříte funkci NAME_IN, Form Builder vyhodnotí jednotlivé funkce NAME_IN od
nejvnitřnější po nejvzdálenější jedna.
Syntaxe
NÁZEV FUNKCE_IN
(název_proměnné VARCHAR2);
Vestavěný typ neomezená funkce
Vrátí VARCHAR2
Vstoupit do režimu dotazování ano
Parametry
název_proměnné Určuje platná proměnná nebo textová položka. Datový typ názvu je
VARCHAR2.
Poznámky k použití
Pokud je vrácená hodnota řetězec data, NAME_IN použije masku formátu zadanou ve vlastnosti
BUILTIN_DATE_FORMAT. Pokud je vlastnost DATE_FORMAT_COMPATIBILITY_MODE
nastavena na 4.5, použije se k formátování vráceného řetězce výchozí americký formát.
Příklady NAME_IN
/*
** Vestavěný:NAME_IN
** Příklad:Jednoduchá implementace zásobníku Last-In-First-Out
** pomocí globálních proměnných.
** Pro každý pojmenovaný zásobník ukazuje globální proměnná
** GLOBAL._PTR na největší
** prvek v zásobníku. PUSH zvyšuje tuto
** hodnotu při přidávání nových prvků. Hodnoty
** PUSH'ed on nebo POP's off z pojmenovaného zásobníku jsou
** ve skutečnosti uloženy v GLOBAL proměnných
** vhodně vytvořeného názvu:GLOBAL.nnn
** kde 'nnn' je číslo prvku v zásobníku
**.
**
** Použití:
** Push('MYSTACKNAME' , '1');
** Push('MYSTACKNAME', '2');
**
** str_var :=Pop('MYSTACKNAME'); -- Získá '2'
** str_var :=Pop('MYSTACKNAME'); -- Získá '1'
** str_var :=Pop('MYSTACKNAME'); -- Získá 'EOS'
**
*/
PROCEDURE Push ( název_zásobníku VARCHAR2,
hodnota VARCHAR2 ) JE
jméno_ptr VARCHAR2(40); -- Název ukazatele tohoto zásobníku
předpona VARCHAR2(40); -- Společná předpona pro vars úložiště
elt_name VARCHAR2(40); -- Název prvku úložiště
new_idx VARCHAR2(4); -- Nová hodnota ukazatele zásobníku
BEGIN
/*
** Pro jakýkoli pojmenovaný zásobník, na který odkazujeme, globální
** proměnné používané pro ukládání hodnot zásobníku a
** všechny ukazatele zásobníku začínají společnou předponou:
** GLOBAL.
*/
předpona :='GLOBAL.' || the_stackname;
/*
** Ukazatel tohoto pojmenovaného zásobníku se nachází v
** GLOBAL._PTR Pamatujte, že toto je *název*
** ukazatele.
*/
jméno_ptr :=předpona || '_PTR';
/*
** Inicializujte ukazatel zásobníku s výchozí hodnotou
** nula, pokud ukazatel zásobníku dříve neexistoval, tj.
** GLOBAL ._PTR ještě nebylo vytvořeno.
*/
Default_Value( '0', název_ptr );
/*
** Protože tlačíme na nový prvek v zásobníku,
** zvýší ukazatel zásobníku tak, aby odrážel pozici tohoto nového
** prvku. Pamatujte, že GLOBAL proměnné jsou
** vždy typu VARCHAR2, takže je musíme před jakýmikoli výpočty převést na TO_NUMBER
**.
*/
new_idx :=TO_CHAR( TO_NUMBER( Name_In ( ptr_name ) ) + 1 );
Copy( new_idx , ptr_name );
/*
** Určete název globální proměnné, do které se
** uloží předaná hodnota in, GLOBAL..
** Toto je jednoduše předpona zřetězená k novému číslu indexu
**, které jsme právě vypočítali výše.
*/
elt_name :=prefix||new_idx;
Copy( the_value, elt_name );
END;
FUNCTION Pop (the_stackname VARCHAR2)
RETURN VARCHAR2 IS
ptr_name VARCHAR2(40); -- Název ukazatele tohoto zásobníku
předpona VARCHAR2(40); -- Společná předpona pro vars úložiště
elt_name VARCHAR2(40); -- Název prvku úložiště
new_idx VARCHAR2(4); -- Nová hodnota ukazatele zásobníku
cur_idx VARCHAR2(4); -- Aktuální hodnota ukazatele zásobníku
hodnota VARCHAR2(255);
EMPTY_STACK CONSTANT VARCHAR2(3) :='EOS';
NO_SUCH_STACK CONSTANT VARCHAR2(3) :='NSS';
BEGIN
/*
** Pro každý pojmenovaný zásobník, na který odkazujeme, začínají globální
** proměnné používané pro ukládání hodnot zásobníku a
** ukazatel zásobníku se společnou předponou:
** GLOBAL.
*/
předpona :='GLOBAL.' || the_stackname;
/*
** Ukazatel tohoto pojmenovaného zásobníku se nachází v
** GLOBAL._PTR Pamatujte, že toto je *název*
** ukazatele.
*/
jméno_ptr :=předpona || ’_PTR’;
/*
** Vynutí výchozí hodnotu NULL, abychom mohli otestovat, zda existuje ukazatel
** (jako globální proměnná). Pokud neexistuje
**, můžeme za chvíli otestovat hodnotu NULL a vyhnout se
** typické chybě kvůli odkazování na neexistující
** globální proměnné.*/
Default_Value( NULL, ptr_name );
/*
** Pokud je *hodnota* obsažená v ukazateli NULL, pak
** ukazatel nesmí existovaly před
** prohlášením Default_Value výše. V tomto případě vraťte konstantu
** NO_SUCH_STACK a vymažte globální proměnnou
**, kterou Default_Value implicitně vytvořila.
*/
IF Name_In( ptr_name ) JE NULL THEN
the_val :=NO_SUCH_STACK;
Erase( ptr_name );
/*
** Jinak pojmenovaný zásobník již existuje. Získejte
** index největšího prvku zásobníku z ukazatele
** tohoto zásobníku.
*/
ELSE
cur_idx :=Name_In( ptr_name );
/*
** Pokud je index nula, pak je pojmenovaný zásobník již
** prázdný, takže vraťte konstantu EMPTY_STACK a ponechte
** ukazatel zásobníku na později používat, tj. ne
** VYMAZAT jej.
**
** Všimněte si, že zásobník může být prázdný pouze v případě, že některé hodnoty
** byly PUSH'ed a pak všechny hodnoty následně
** POP'ed. Pokud by na tomto zásobníku s názvem
** nebyly nikdy PUSH'ed žádné hodnoty, pak by nebyl vytvořen žádný přidružený ukazatel zásobníku
** a tuto chybu bychom označili pomocí
** NO_SUCH_STACK případ výše.
*/
IF cur_idx ='0' THEN
the_val :=EMPTY_STACK;
/*
** Pokud je index nenulový, pak :
** (1) Určete název globální proměnné
**, ve které je uložena hodnota, která má být odeslána POP,
** GLOBAL.
** (2) Získejte hodnotu (cur_idx)-tého prvku na
** return
** (3) Snižte ukazatel zásobníku
** (4) Vymažte globální proměnná, která byla použita pro
** ukládání hodnot
*/
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 );
Erase ( elt_name );
END IF;
END IF;
RETURN the_val;
END;

  1. Nainstalujte MySQL na Ubuntu 14.04

  2. Jak mohu serializovat velký graf objektu .NET do objektu SQL Server BLOB bez vytvoření velké vyrovnávací paměti?

  3. LEFT JOIN pouze první řada

  4. Jak opravit chyby nesprávné hodnoty řetězce?