- 締切済み
置換変数が再利用できない
OracleのSQL*Plusで、&を使った置換変数を利用していますが、 「&&」にしても、毎回値の入力を求められます。 何が悪いのかわかりません。 どなたか教えてください。宜しくお願いします。 ---TEST.sql------------------------------- SET PAGES 0 SET COLSEP ',' SET LIN 1000 SET Trimspool on SPOOL c:\work\testresult.txt SELECT * FROM temp WHERE module_DATE BETWEEN '&StartDT' and '&EndDT'; SELECT * FROM temp2 WHERE module_DATE BETWEEN '&&StartDT' and '&&EndDT'; SPOOL OFF ------------------------------------------
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- zealzany
- ベストアンサー率35% (19/53)
sql.txt ----------- SELECT * FROM temp WHERE module_DATE BETWEEN '&1' and '&2'; SELECT * FROM temp2 WHERE module_DATE BETWEEN '&1' and '&2'; SQL*PLUSにて @c:\sql.txt "StartDTの値" "EndDTの値" これでどうでしょうか? また**DTが数値の場合はシングル・ダブルのクォーテーションを削除してください。
- Struts
- ベストアンサー率48% (29/60)
実行方法が下記の場合 SQL > @TEST &&を&一つにする。 SELECT * FROM temp WHERE module_DATE BETWEEN '&StartDT' and '&EndDT'; SELECT * FROM temp2 WHERE module_DATE BETWEEN '&StartDT' and '&EndDT' そして実行は下記とする。 SQL > @TEST パラメータ1 パラメータ2 違っていたらごめんなさい。
- mi-si
- ベストアンサー率35% (200/567)
DEFINE StartDT = '2004/01/01' DEFINE EndDT = '2004/03/01' の用にあらかじめ変数を定義しておかないと行けないと思います。未定義の場合は値を聞かれます。
- xyz0108f
- ベストアンサー率39% (80/202)
StartDTとStartDTにBETWEENで使用する値が入っていないから、毎回値の入力が聞かれるのだと思います。 VB等のプログラムからこのSQLを動作させるのであればStartDTとStartDTに値を入れてから実行すれば動くと思うのですが。 OracleのSQL*Plusで動作させるには変数ではなく、値を書かないとダメなのではないでしょうか?