WITH QUOTES 句
WITH QUOTES または WITH QUOTES ON を指定すると、文字列式にある二重引用符はすべて識別子を区切るものと見なされます。WITH QUOTES を指定しない場合、または WITH QUOTES OFF を指定する場合、文字列式内の二重引用符は、quoted_identifier
オプションの現在の設定に応じて処理されます。
WITH QUOTES は、ストアドプロシージャーに渡されるオブジェクト名が、実行される文の一部として使用される場合に役立ちます。ただし、名前に二重引用符が必要な場合や、quoted_identifier オプションが Off に設定されているときにプロシージャーが呼び出される場合があります。
WITH ESCAPES 句
WITH ESCAPES OFF を指定すると、文字列式のエスケープシーケンス (\n、\x、\\ など) がすべて無視されます。たとえば、連続する 2 つの円記号は、1 つの円記号に変換されるのではなく、2 つの円記号として残ります。デフォルトの設定は、WITH
ESCAPES ON です。
WITH ESCAPES OFF には、動的に作成された文が円記号を含むファイル名を参照する場合に、この文の実行を容易にするという用途があります。
コンテキストによっては、string-expression のエスケープシーケンスは、EXECUTE IMMEDIATE 文が実行される前に変換されます。たとえば、複合文は実行される前に解析され、WITH ESCAPES の設定にかかわらず、エスケープシーケンスがこの解析中に変換されます。これらのコンテキストでは、WITH
ESCAPES OFF を指定すると、これ以上は変換されません。次に例を示します。
BEGIN
DECLARE String1 LONG VARCHAR;
DECLARE String2 LONG VARCHAR;
EXECUTE IMMEDIATE
'SET String1 = ''One backslash: \\\\ ''';
EXECUTE IMMEDIATE WITH ESCAPES OFF
'SET String2 = ''Two backslashes: \\\\ ''';
SELECT String1, String2
END
WITH BATCH 句
WITH BATCH 句を使用して、EXECUTE IMMEDIATE 文でバッチの実行を管理できます。WITH BATCH OFF を設定すると、プロシージャーの実行時に誤って SQL を挿入するのを防ぐことができます。
WITH BATCH ON は dbo が所有するプロシージャー以外ではデフォルトです。
WITH BATCH OFF が使用されると、string-expressionで指定された文は 1 つの文になるはずです。
WITH RESULT SET 句
WITH RESULT SET 句を使用すれば、サーバーでこの句を含むプロシージャーを正しく定義できます。WITH RESULT SET ON または WITH RESULT SET OFF を指定することは、プロシージャーが作成されるときだけではなく、プロシージャーが実行されるときの動作についても影響をもたらすことになります。デフォルトオプションは
WITH RESULT SET OFF です。
WITH RESULT SET ON を指定することによって、EXECUTE IMMEDIATE 文で結果を返すことができます。この句を使用すると、この句を含むプロシージャーが結果セットを返すように指定されます。