2012-01-25 18 views

答えて

10

SET SCANが廃止されたいが、置換パラメータ/変数をスキャンする必要があるかどうかを制御するために使用されていました。 OFFは、パラメータ/変数のスキャンを防止します。 /は、機能性と良い過去記事を拡張

SET DEFINE置き換えはここにある:

セットは上の定義のウェブサイトからhttp://shaharear.blogspot.com/2009/01/set-define.html

「& hello」をデュアルから選択してください。

defineがonに設定され、SQL * Plusが接頭辞 の現行の置換を検出すると、入力する文字列を尋ねます。次の例では、 は、私が入力された:ハサン・

はハローに値を入力します。この文字列は、これは古いSET SCANがどのように動作するかと等価である

old 1: select '&hello' from dual 
new 1: select 'this string was entered' from dual 

に入りました。基本的に置換を促すかどうかを制御しています

+1

DEFINEはデフォルトでONに設定されていますか? –

4

SQL * Plus(およびSQL * Plus構文をサポートするその他のさまざまなツール)では、デフォルトでツールが置換変数を検索するSQL文をスキャンします。これにより、さまざまなレポート作成タスクにSQL * Plusで定義された変数を使用するSQL * Plusスクリプトを作成できます。

代替変数はアンパサンド( '&')で始まり、事前に宣言する必要はないため、アンパサンドを含むSQL文を実行しようとすると問題が発生します。たとえば、INSERT文にアンパサンドを含む文字列リテラルがある場合、SQL * Plusでその文を前処理する必要はありません。私は

SQL> set scan off; 
SQL> ed 
Wrote file afiedt.buf 

    1* select 'foo & bar' from dual 
SQL>/

'FOO&BAR' 
--------- 
foo & bar 

文字列「fooの&バー」を選択したい場合、私はSQL * Plusのための前処理文で許可している場合や、しかし、テキスト「&バーは、」置換変数とIとして解釈されます「デュアル新しい1から:選択して 『FOO &バーをFOO』:いくつかの値が古い1を選択SQL> /バーの値を入力の上>実行時に設定されたスキャンを

SQL> set scan on 
SQL>/
Enter value for bar: some value 
old 1: select 'foo & bar' from dual 
new 1: select 'foo some value' from dual 

'FOOSOMEVALUE' 
-------------- 
foo some value 
-2

SQLを置換するテキストを入力するように求めM」デュアルからいくつかの値 '

'FOOSOMEVALUE' -------------- foo some value

関連する問題