OracleD2kFormsに組み込まれているNAME_IN
説明
指定された変数の値を返します。
戻り値は文字列の形式です。ただし、NAME_INを使用して、数値と日付を文字列として
返し、それらの文字列を適切なデータ型に変換することができます。
実行可能ステートメント内の任意の値を使用するのと同じように、戻り値を使用できます。
NAME_IN関数をネストすると、FormBuilderは個々のNAME_IN関数を
最も内側から最も外側まで評価します。 1つ。
構文
FUNCTION NAME_IN
(variable_name VARCHAR2);
組み込み型の無制限関数
はVARCHAR2を返します
クエリモードに入るはい
パラメータ
variable_name指定有効な変数またはテキストアイテム。名前のデータ型は
VARCHAR2です。
使用上の注意
戻り値が日付文字列の場合、NAME_INは
BUILTIN_DATE_FORMATプロパティで指定されたフォーマットマスクを使用します。 DATE_FORMAT_COMPATIBILITY_MODEプロパティが4.5に設定されている場合、返される文字列のフォーマットにはデフォルトのアメリカンフォーマットが使用されます。
NAME_INの例
/ *
**組み込み:NAME_IN
**例:後入れ先出し
**グローバル変数を使用したスタックメカニズムの単純な実装。
**名前付きスタックごとに、グローバル変数
**GLOBAL。
**要素を指します。 PUSHは、新しい要素が追加されると、この
**値をインクリメントします。値
**名前付きスタックにプッシュオンまたはポップオフ
**実際には
**便利な形式の名前のグローバル変数に格納されます:GLOBAL。
**ここで、「nnn」は
**スタック上の要素の番号です。
**
**使用法:
** Push('MYSTACKNAME' 、'1');
** Push('MYSTACKNAME'、 '2');
**
** str_var:=Pop('MYSTACKNAME'); --「2」を取得します
** str_var:=Pop('MYSTACKNAME'); --「1」を取得します
** str_var:=Pop('MYSTACKNAME'); --「EOS」を取得します
**
* /
PROCEDURE Push(the_stackname VARCHAR2、
the_value VARCHAR2)IS
ptr_name VARCHAR2(40); -このスタックのポインタ名
プレフィックスVARCHAR2(40); --ストレージ変数の共通プレフィックス
elt_nameVARCHAR2(40); -ストレージ要素の名前
new_idxVARCHAR2(4); --新しいスタックポインタ値
BEGIN
/ *
**参照する名前付きスタックの場合、スタックの値と
**変数/> **スタックのポインタはすべて共通のプレフィックスで始まります:
**GLOBAL。
* /
prefix:='GLOBAL。'|| the_stackname;
/ *
**この名前付きスタックのポインタは
**GLOBAL。
**であることに注意してください。
* /
ptr_name:=プレフィックス|| '_PTR';
/ *
**スタックポインタが以前に存在しなかった場合、つまり
** GLOBALの場合、デフォルト値
**ゼロでスタックポインタを初期化します。 。
*/
Default_Value( '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;
Copy(the_value、elt_name);
END;
FUNCTION Pop(the_stackname VARCHAR2)
RETURN VARCHAR2 IS
ptr_name VARCHAR2(40); -このスタックのポインタ名
プレフィックスVARCHAR2(40); --ストレージ変数の共通プレフィックス
elt_nameVARCHAR2(40); -ストレージ要素の名前
new_idxVARCHAR2(4); -新しいスタックポインタ値
cur_idxVARCHAR2(4); -現在のスタックポインタ値
the_valVARCHAR2(255);
EMPTY_STACK CONSTANT VARCHAR2(3):='EOS';
NO_SUCH_STACK CONSTANT VARCHAR2(3):='NSS';
BEGIN
/ *
**参照する名前付きスタックの場合、スタックの値を格納するために使用されるグローバル
**変数と
**スタックのポインターはすべて始まります共通のプレフィックス:
**GLOBAL。
* /
prefix:='GLOBAL。'|| the_stackname;
/ *
**この名前付きスタックのポインタは
**GLOBAL。
**であることに注意してください。
* /
ptr_name:=プレフィックス|| ’_PTR’;
/ *
**デフォルト値を強制的にNULLにして、
**ポインタが(グローバル変数として)存在するかどうかをテストできるようにします。存在しない場合は、
** NULLをすぐにテストして、
**存在しないグローバル変数を参照することによる一般的なエラーを回避できます。
** /> * /
Default_Value(NULL、ptr_name);
/ *
**ポインタに含まれる*value*がNULLの場合、
**ポインタはいけません上記の
**Default_Valueステートメントの前に存在していました。この場合、定数
** NO_SUCH_STACKを返し、Default_Valueが暗黙的に作成したグローバル
**変数を消去します。
* /
IF Name_In(ptr_name)IS NULL THEN
the_val:=NO_SUCH_STACK;
Erase(ptr_name);
/ *
**それ以外の場合、指定されたスタックはすでに存在します。このスタックの
**ポインタから最大のスタック要素の
**インデックスを取得します。
*/
ELSE
cur_idx:=Name_In(ptr_name);
/ *
**インデックスがゼロの場合、名前付きスタックはすでに
**空なので、定数EMPTY_STACKを返し、
**スタックのポインタを後で使用できるようにしておきます。使用します。つまり、
**消去しないでください。
**
**スタックを空にできるのは、一部の値がプッシュされて
**された場合のみであることに注意してください。その後、すべての値が
**ポップされます。この名前付きの
**スタックに値がプッシュされなかった場合、関連付けられたスタックポインタは
**作成されず、
**NO_SUCH_STACKでそのエラーにフラグを立てます。上記の場合。
*/
IF cur_idx ='0' THEN
the_val:=EMPTY_STACK;
/ *
**インデックスがゼロ以外の場合、 :
**(1)POPされる値が格納されている
**のグローバル変数の名前を決定します。
**GLOBAL。
**(2)(cur_idx)番目の要素の値を取得して
** return
**(3)スタックポインタをデクリメントします
**(4)消去します
**値の保存に使用されたグローバル変数
*/
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;