Oracle
 sql >> база данни >  >> RDS >> Oracle

NAME_IN, вграден в Oracle D2k Forms

NAME_IN вграден в Oracle D2k Forms

Описание
Връща стойността на посочената променлива.
Върнатата стойност е под формата на символен низ. Можете обаче да използвате NAME_IN, за да върнете
числа и дати като низове от знаци и след това да конвертирате тези низове в подходящите типове данни. Вие
можете да използвате върнатата стойност, както бихте използвали всяка стойност в рамките на изпълним израз.
Ако вложите функцията NAME_IN, Form Builder оценява отделните функции NAME_IN от
най-вътрешната до най-външната едно.
Синтаксис
ИМЕ НА FUNCTION_IN
(име_променлива VARCHAR2);
Вграден тип неограничена функция
Връща VARCHAR2
Влезте в режим на заявка да
Параметри
име_променлива Указва валидна променлива или текстов елемент. Типът данни на името е
VARCHAR2.
Забележки за употреба
Ако върнатата стойност е низ от дата, NAME_IN ще използва маската на формат, посочена в свойството
BUILTIN_DATE_FORMAT. Ако свойството DATE_FORMAT_COMPATIBILITY_MODE
е зададено на 4.5, американският формат по подразбиране се използва за форматиране на върнатия низ.
Примери NAME_IN
/*
** Вградено:NAME_IN
** Пример:Опростено внедряване на механизъм Last-In-First-Out
** с помощта на глобални променливи.
** За всеки именуван стек глобална променлива
** GLOBAL.<име на стека>_PTR сочи към най-големия
** елемент в стека. PUSH увеличава тази
** стойност, когато се добавят нови елементи. Стойности
** PUSH'ed или POP'ed от наименования стек са
** всъщност се съхраняват в GLOBAL променливи на
** удобно формирано име:GLOBAL.nnn
** където 'nnn' е номерът на елемента в
** стека.
**
** Използване:
** Push('MYSTACKNAME' , '1');
** Push('MYSTACKNAME', '2');
**
** str_var :=Pop('MYSTACKNAME'); -- Получава ’2’
** str_var :=Pop(’MYSTACKNAME’); -- Получава ’1’
** str_var :=Pop(’MYSTACKNAME’); -- Получава ’EOS’
**
*/
ПРОЦЕДУРА Push ( the_stackname VARCHAR2,
the_value VARCHAR2) IS
ptr_name VARCHAR2(40); -- Името на указателя на този стек
префикс VARCHAR2(40); -- Общ префикс за vars за съхранение
elt_name VARCHAR2(40); -- Име на елемента за съхранение
new_idx VARCHAR2(4); -- Нова стойност на указател на стека
BEGIN
/*
** За всеки именуван стек, който препращаме, глобалните
** променливи, използвани за съхраняване на стойностите на стека и
** всички указатели на стека започват с общ префикс:
** GLOBAL.<име на стека>
*/
префикс :='GLOBAL.' || the_stackname;
/*
** Указателят на този именуван стек се намира в
** GLOBAL.<име на стека>_PTR Не забравяйте, че това е *name*
** на указателя.
*/
ptr_name :=префикс || '_PTR';
/*
** Инициализирайте указателя на стека със стойност по подразбиране
** нула, ако указателят на стека не е съществувал преди това, т.е.
** GLOBAL .<име на стека>_PTR тепърва трябваше да бъде създаден.
*/
Стойност по подразбиране ('0', ptr_name );
/*
** Тъй като натискаме нов елемент в стека,
** увеличете указателя на стека, за да отразите позицията на този нов
** елемент. Не забравяйте, че GLOBAL променливите са
** винаги от тип VARCHAR2, така че трябва да ги преобразуваме в TO_NUMBER
** преди всякакви изчисления.
*/
new_idx :=TO_CHAR( TO_NUMBER( Name_In ( ptr_name ) ) + 1 );
Copy( new_idx , ptr_name );
/*
** Определете името на глобалната променлива, която ще
** съхранява предадената стойност in, GLOBAL..
** Това е просто префиксът, свързан към новия индекс
** номер, който току-що изчислихме по-горе.
*/
elt_name :=prefix||new_idx;
Копиране( the_value , elt_name );
END;
FUNCTION Pop (the_stackname VARCHAR2)
ВЪРНАНЕ VARCHAR2 Е
ptr_name VARCHAR2(40); -- Името на указателя на този стек
префикс VARCHAR2(40); -- Общ префикс за vars за съхранение
elt_name VARCHAR2(40); -- Име на елемента за съхранение
new_idx VARCHAR2(4); -- Нова стойност на указател на стека
cur_idx VARCHAR2(4); -- Текуща стойност на указател на стека
the_val VARCHAR2(255);
EMPTY_STACK CONSTANT VARCHAR2(3) :='EOS';
NO_SUCH_STACK CONSTANT VARCHAR2(3) :='NSS';
BEGIN
/*
** За всеки именуван стек, който препращаме, започват глобалните
** променливи, използвани за съхраняване на стойностите на стека и
** указателят на стека с общ префикс:
** GLOBAL.<име на стека>
*/
префикс :='GLOBAL.' || the_stackname;
/*
** Указателят на този именуван стек се намира в
** GLOBAL.<име на стека>_PTR Не забравяйте, че това е *name*
** на указателя.
*/
ptr_name :=префикс || ’_PTR’;
/*
** Принудително задаване на стойност по подразбиране NULL, за да можем да тестваме дали указателят
** съществува (като глобална променлива). Ако не
** съществува, можем да тестваме след момент за NULL и да избегнем
** типичната грешка, дължаща се на препращане към несъществуващи
** глобални променливи.
*/
Стойност по подразбиране( NULL, ptr_name );
/*
** Ако *стойността*, съдържаща се в показалеца, е NULL, тогава
** указателят не трябва са съществували преди изявлението
** Default_Value по-горе. Върнете константата
** NO_SUCH_STACK в този случай и изтрийте глобалната
** променлива, която Default_Value имплицитно създаде.
*/
IF Name_In(ptr_name) Е NULL THEN
the_val :=NO_SUCH_STACK;
Erase(ptr_name );
/*
** В противен случай посоченият стек вече съществува. Вземете
** индекса на най-големия елемент на стека от
** указателя на този стек.
*/
ELSE
cur_idx :=Name_In(ptr_name);
/*
** Ако индексът е нула, тогава посоченият стек вече е
** празен, така че върнете константата EMPTY_STACK и оставете
** указателя на стека за по-късно използвайте, т.е. не
** го ИЗТРИВАТЕ.
**
** Обърнете внимание, че стекът може да бъде празен само ако някои стойности
** са били PUSH и след това всички стойности впоследствие
** POP'ed. Ако в този стек с име
** не бяха въведени стойности, тогава нямаше да е създаден асоцииран указател на стек
** и ние ще маркираме тази грешка с
** NO_SUCH_STACK случай по-горе.
*/
IF cur_idx ='0' THEN
the_val :=EMPTY_STACK;
/*
** Ако индексът е различен от нула, тогава :
** (1) Определете името на глобалната променлива в
**, в която се съхранява стойността, която трябва да бъде POP'ed,
** GLOBAL.
** (2) Вземете стойността на (cur_idx)-тия елемент до
** return
** (3) Намалете указателя на стека
** (4) Изтрийте глобалната променлива, която е била използвана за
** съхранение на стойности
*/
ELSE
elt_name:=префикс || cur_idx;
the_val :=Name_In( elt_name );
new_idx :=TO_CHAR( TO_NUMBER( Name_In(ptr_name) ) - 1 );
Copy( new_idx , ptr_name );
Изтриване ( elt_name );
КРАЙ АКО;
КРАЙ АКО;
ВРЪЩАНЕ на_val;
КРАЙ;

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изсипване на CLOB полета във файлове?

  2. Как да предадете параметър със стойност на таблица от C# към запаметена процедура на Oracle

  3. Как да покажа всички привилегии на база данни на Oracle за потребител

  4. Как да конфигурирате подчертаване на синтаксиса в SQLcl

  5. 12c VARCHAR2(32767)