Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

NAME_IN integrado no Oracle D2k Forms

NAME_IN integrado no Oracle D2k Forms


Descrição
Retorna o valor da variável indicada.
O valor retornado está na forma de uma string de caracteres. No entanto, você pode usar NAME_IN para retornar
números e datas como strings de caracteres e então converter essas strings para os tipos de dados apropriados. Você
pode usar o valor retornado como usaria qualquer valor dentro de uma instrução executável.
Se você aninhar a função NAME_IN, o Form Builder avalia as funções NAME_IN individuais da
mais interna para a mais externa um.
Sintaxe
FUNCTION NAME_IN
(variable_name VARCHAR2);
Built-in Type unrestricted function
Retorna VARCHAR2
Entrar no modo de consulta sim
Parâmetros
variable_name Especifica uma variável ou item de texto válido. O tipo de dados do nome é
VARCHAR2.
Notas de uso
Se o valor retornado for uma string de data, NAME_IN usará a máscara de formato especificada na propriedade
BUILTIN_DATE_FORMAT. Se a propriedade DATE_FORMAT_COMPATIBILITY_MODE
for definida como 4.5, o formato americano padrão será usado para formatar a string retornada.
Exemplos de NAME_IN
/*
** Integrado:NAME_IN
** Exemplo:Implementação simples de um mecanismo de pilha Last-In-First-Out
** usando variáveis ​​globais.
/>** Para cada pilha nomeada, uma variável global
** GLOBAL._PTR aponta para o maior
** elemento da pilha. PUSH incrementa este
** valor à medida que novos elementos são adicionados. Valores
** PUSH'ed on ou POP'ed off da pilha nomeada são
** realmente armazenados em variáveis ​​GLOBAL de um
** nome convenientemente formado:GLOBAL.nnn
** onde 'nnn' é o número do elemento na pilha
**.
**
** Uso:
** Push('MYSTACKNAME' , '1');
** Push('MYSTACKNAME', '2');
**
** str_var :=Pop('MYSTACKNAME'); -- Obtém '2'
** str_var :=Pop('MYSTACKNAME'); -- Obtém '1'
** str_var :=Pop('MYSTACKNAME'); -- Obtém 'EOS'
**
*/
PROCEDURE Push ( the_stackname VARCHAR2,
the_value VARCHAR2 ) IS
ptr_name VARCHAR2(40); -- Nome do ponteiro desta pilha
prefixo VARCHAR2(40); -- Prefixo comum para vars de armazenamento
elt_name VARCHAR2(40); -- Nome do elemento de armazenamento
new_idx VARCHAR2(4); -- Novo valor do ponteiro de pilha
BEGIN
/*
** Para qualquer pilha nomeada que referenciamos, as variáveis
** globais usadas para armazenar os valores da pilha e
** todos os ponteiros da pilha começam com um prefixo comum:
** GLOBAL.
*/
prefixo :='GLOBAL.' || the_stackname;
/*
** O ponteiro desta pilha nomeada reside em
** GLOBAL._PTR Lembre-se que este é o *nome*
** do ponteiro.
*/
ptr_name :=prefixo || '_PTR';
/*
** Inicialize o ponteiro de pilha com um valor padrão de
** zero se o ponteiro de pilha não existia anteriormente, ou seja,
** o GLOBAL ._PTR ainda não havia sido criado.
*/
Default_Value( '0', ptr_name );
/*
** Como estamos PUSH'ing um novo elemento na pilha,
** incrementa o ponteiro da pilha para refletir a posição desse novo
** elemento. Lembre-se que as variáveis ​​GLOBAL são
** sempre do tipo VARCHAR2, então devemos convertê-las TO_NUMBER
** antes de qualquer cálculo.
*/
new_idx :=TO_CHAR( TO_NUMBER( Name_In ( ptr_name ) ) + 1 );
Copy( new_idx , ptr_name );
/*
** Determina o nome da variável global que
** armazenará o valor passado in, GLOBAL..
** Este é simplesmente o prefixo concatenado ao novo índice
** número que acabamos de calcular acima.
*/
elt_name :=prefix||new_idx;
Copy( the_value , elt_name );
END;
FUNCTION Pop ( the_stackname VARCHAR2)
RETURN VARCHAR2 IS
ptr_name VARCHAR2(40); -- Nome do ponteiro desta pilha
prefixo VARCHAR2(40); -- Prefixo comum para vars de armazenamento
elt_name VARCHAR2(40); -- Nome do elemento de armazenamento
new_idx VARCHAR2(4); -- Novo valor do ponteiro de pilha
cur_idx VARCHAR2(4); -- Valor atual do ponteiro da pilha
the_val VARCHAR2(255);
EMPTY_STACK CONSTANT VARCHAR2(3) :='EOS';
NO_SUCH_STACK CONSTANT VARCHAR2(3) :='NSS';
BEGIN
/*
** Para qualquer pilha nomeada que referenciamos, as variáveis ​​globais
** usadas para armazenar os valores da pilha e
** o ponteiro da pilha começam com um prefixo comum:
** GLOBAL.
*/
prefixo :='GLOBAL.' || the_stackname;
/*
** O ponteiro desta pilha nomeada reside em
** GLOBAL._PTR Lembre-se que este é o *nome*
** do ponteiro.
*/
ptr_name :=prefixo || '_PTR';
/*
** Força um valor padrão de NULL para que possamos testar se o
** ponteiro existe (como uma variável global). Se não
** existir, podemos testar em um momento para o NULL e evitar
** o erro típico devido à referência a variáveis ​​globais
** inexistentes.
** />*/
Default_Value( NULL, ptr_name );
/*
** Se o *valor* contido no ponteiro for NULL, então
** o ponteiro não deve existiram antes da instrução
** Default_Value acima. Retorne a constante
** NO_SUCH_STACK neste caso e apague a variável global
** que o Default_Value criou implicitamente.
*/
IF Name_In( ptr_name ) IS NULL THEN
the_val :=NO_SUCH_STACK;
Erase( ptr_name );
/*
** Caso contrário, a pilha nomeada já existe. Obtenha o
** índice do maior elemento da pilha do ponteiro
** desta pilha.
*/
ELSE
cur_idx :=Name_In( ptr_name );
/*
** Se o índice for zero, então a pilha nomeada já está
** vazia, então retorne a constante EMPTY_STACK e deixe
** o ponteiro da pilha para mais tarde use, ou seja, não
** APAGUE.
**
** Observe que uma pilha só pode estar vazia se alguns valores
** tiverem sido PUSH'ed e então todos os valores subsequentemente
** POP'ed. Se nenhum valor fosse PUSH'ed nesta pilha
** nomeada, então nenhum ponteiro de pilha associado teria
** sido criado, e nós sinalizaríamos esse erro com o
** NO_SUCH_STACK caso acima.
*/
IF cur_idx ='0' THEN
the_val :=EMPTY_STACK;
/*
** Se o índice for diferente de zero, então :
** (1) Determine o nome da variável global em
** na qual o valor a ser POP'ed está armazenado,
** GLOBAL.
** (2) Obter o valor do elemento (cur_idx)-th para
** return
** (3) Decrementar o ponteiro da pilha
** (4) Apagar a variável global que foi usada para
** armazenamento de valor
*/
ELSE
elt_name:=prefix || cur_idx;
the_val :=Name_In( elt_name );
new_idx :=TO_CHAR( TO_NUMBER( Name_In(ptr_name) ) - 1 );
Copiar( new_idx , ptr_name );
Apagar ( elt_name );
END IF;
END IF;
RETURN the_val;
END;