• 締切済み

「&」ってなんですか?

下記の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;) なぜ値の入力が求められてくるのですか? どなたかこの処理内容をを教えてください!

みんなの回答

回答No.2

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

HANNO
質問者

お礼

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

すると、全ての回答が全文表示されます。
回答No.1

普通に文法から考えて'c'も'&ランク'も両方ELSEの'ランク外。。。'になるのは当たり前の訳で・・・。 ''で囲まれていればそれは全て文字列であるので、&がキーワードになっていることは考えられません。 'c'で'もっと勉強せよ!'が出てこないのは、'C'でないから・・・。 大文字と小文字は区別されますよ。

HANNO
質問者

補足

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

すると、全ての回答が全文表示されます。

関連するQ&A