プロが教える店舗&オフィスのセキュリティ対策術

下記のCASE式の中で質問があります。 

****CASE式の使用例***************************************

 SQL> set serveroutput on
 SQL> DECLARE
 2 v_selecter CHAR(1) := '&ランク';
 3 v_result VARCHAR2(40);
 4 BEGIN
 5 v_result := CASE v_selecter
 6 WHEN 'A' THEN '合格!'
 7 WHEN 'B' THEN 'ぎりぎり合格!'
 8 WHEN 'C' THEN 'もっと勉強せよ!'
 9 ELSE 'ランク外。。。'
 10 END;
 11 DBMS_OUTPUT.PUT_LINE('評価:' || v_result);
 12 END;
 13 /

 ランクに値を入力してください: c
 旧 2: v_selecter CHAR(1) := '&ランク'; 
 新 2: v_selecter CHAR(1) := 'c'; 
 評価:ランク外。。。

 PL/SQLプロシージャが正常に完了しました。

 *******************************************************
変数宣言部分「v_selecter CHAR(1) := '&ランク';」なんですが
「'&ランク'」では一体どのような処理行われているのですか???
「&」が何かのキーワードであるはずで
それを参考本などから調べてもどれも「&」には触れず
サラッと流れているんです(T□T;)
なぜ値の入力が求められてくるのですか?
どなたかこの処理内容をを教えてください!

A 回答 (2件)

普通に文法から考えて'c'も'&ランク'も両方ELSEの'ランク外。

。。'になるのは当たり前の訳で・・・。

''で囲まれていればそれは全て文字列であるので、&がキーワードになっていることは考えられません。

'c'で'もっと勉強せよ!'が出てこないのは、'C'でないから・・・。

大文字と小文字は区別されますよ。

この回答への補足

なるほど~。
大文字と小文字は区別されるんですね。
ありがとうございます!「

あとひとつ質問よろしいですか?
ではCASEで「v_selecter」の値を比較をしているのですが
初期設定では「&ランク」で設定していますよね?
その後「ランクに値を入力してください: 」という
プロンプト的な動きが出るのはどうしてでしょうか???
その入力した値でCASE文比較に入っているんです。。。

補足日時:2006/11/21 11:33
    • good
    • 0

'&ランク'は置き換え文字になります。


これは「sql*plusユーザーズガイドおよびリファレンス」に載っています。
'&ランク'という文字を設定(初期化)しているわけではありません。
(サイズ的に無理です。)
    • good
    • 0
この回答へのお礼

「置換変数」
今ガイドで調べてみました。
便利なサイトがあるんですね!
ご協力ありがとうございました。

お礼日時:2006/11/21 14:35

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