プロが教えるわが家の防犯対策術!

PL/SQLでファンクションの呼出を行いたいと思っています。
そこでファンクション名を変数で指定したいと思っているのですがうまくいきません。

ファンクション
FUNCTION Check
(
pi_Syori_No   IN NUMBER,  -- 処理No.
po_Function_Name OUT VARCHAR2  -- ファンクション名
) RETURN BOOLEAN
IS

TYPE Test_List IS VARRAY(100) OF VARCHAR2(10) NOT NULL;
TYPE FcNameList IS VARRAY(100) OF VARCHAR2(10) NOT NULL;
MmsCheckList Test_List := Test_List('○','×');
FcNameCheckList FcNameList := FcNameList('Check','Check');

BEGIN

IF MmsCheckList(pi_Syori_No) = '○' THEN
po_Function_Name :=FcNameCheckList(pi_Syori_No);
ELSE
po_Function_Name :=NULL;
END IF;

RETURN TRUE;

EXCEPTION
WHEN OTHERS THEN
RETURN FALSE;
END Check;

メイン
CREATE OR REPLACE PROCEDURE Test
(
po_Out OUT VARCHAR2
)
IS
Modoriti BOOLEAN :=TRUE;
F_Neme VARCHAR2(2000) :=NULL;

BEGIN

IF Check(1,F_Neme) = TRUE THEN
Modoriti := F_Neme(2,F_Neme);
END IF;

EXCEPTION

WHEN OTHERS THEN

po_Out := 'エラー';

END Test;

この状態で実行すると下記のエラーが出てしまいます。
[PLS-00222: この有効範囲内に、名前'F_Neme'の関数は存在しません。]
ファンクション名に変数を使うのは無理なのでしょうか?
よろしくお願いいたします。

A 回答 (2件)

ファンクションをどのように使いたいのか、質問に明記された方が回答があるかも知れませんよ。


なるべく実例に近づけて。
質問を出しなおしてみては?
    • good
    • 0
この回答へのお礼

ご返事が遅くなり申し訳ありません。
assault852様の言われるとおり、ファンクションをどのように使いたいかなどを、しっかり明記していませんでした。

また、自分の中でも明確な使い方がしっかりしておりませんので一度締め切らせていただき、
再度まとまりましたら質問させていただきたいと思います。
本当にありがとうございました。

お礼日時:2007/11/29 01:13

ちょっと聞いたことがないですね。


なぜ変数的扱いをしなければならなくなったのでしょうか。

この回答への補足

早速のご返答ありがとうございます。

なぜ変数的扱いをしなければならなくなったかというと、自分が初心者のため変数しか思いつかなかったからです。
これといって変数的扱にこだわっているわけではないです。

また、色々試していたのですが行き詰まり、今回質問させていただいたしだいです。

補足日時:2007/11/27 18:01
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!