Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

TSQL 設定

設定は、コンパイラとカラー表示機能の動作を調整するために使用します。TSQL 構成オプションは、標準の Caché 構成の一部です。

Caché は以下の TSQL 設定をサポートしています。

  • DIALECT (既定は Sybase)

  • ANSI_NULLS

  • CASEINSCOMPARE (文字列比較で、大文字/小文字を区別しない。)

  • QUOTED_IDENTIFIER

  • TRACE

これらの値は、対応する ^%SYS("tsql","SET",...) グローバル配列値の設定に使用します。

詳細は、"Caché 追加構成設定リファレンス" の "TSQL 互換性設定" を参照してください。

Caché 管理ポータル、または %SYSTEM.TSQLOpens in a new tab クラス・メソッドを使用して、これらの設定を表示および変更できます。

  • Caché 管理ポータルに移動します。[システム管理][構成][SQL およびオブジェクトの設定][TSQL互換性設定] (システム, 構成, TSQL設定) の順に移動します。ここでは、DIALECT (Sybase または MSSQL。既定では Sybase) を指定したり、ANSI_NULLSCASEINSCOMPARE および QUOTED_IDENTIFIER をオンまたはオフに設定したりできます。

    1 つ以上の構成オプションを変更すると、[TSQL設定] の見出しの後にアスタリスクが表示されます。これは、変更が行われたが、まだ保存されていないことを示します。構成の変更を有効にするには、[保存] ボタンをクリックする必要があります。

  • $SYSTEM.TSQL.CurrentSettings()Opens in a new tab メソッドを呼び出して次の設定を表示します。

      DO ##class(%SYSTEM.TSQL).CurrentSettings()

    %SYSTEM.TSQLOpens in a new tab クラス・メソッドを使用して、ANSI_NULLS、CaseInsCompare、および Quoted_Identifier 設定を取得または設定できます。これらのメソッドは言語文字列を受け取りますが、TSQL 言語用の別の設定はありません。例えば、CaseInsCompare を変更すると、Sybase および MSSQL の両方に対する構成設定が変更されます。

DIALECT

DIALECT 構成オプションでは、Transact-SQL 言語を選択できます。選択可能なオプションは Sybase および MSSQL です。既定値は Sybase です。このオプションは、Caché 管理ポータルを使用して設定されます。

DIALECT=MSSQL の場合、DECLARE 文はホスト変数値を結合します。

DIALECT=Sybase の場合、ホスト変数値は更新され、各カーソルを OPEN にします。

ANSI_NULLS

ANSI_NULLS 構成オプションを使用すると、NULL 値に対する比較で True と False のどちらが返されるかを指定できます。既定値は OFF です。

  • ON : NULL 値に対する比較はすべて不明と評価されます。例えば、Age が NULL の場合でも、Age = NULL は False を返します。NULL は不明になります。そのため、NULL=NULL の指定は False/不明になります。

  • OFF : 両方の値が NULL の場合、非 Unicode 値の NULL 値に対する比較は True と評価されます。例 : Age に対して NULL の値の場合、Age = NULL は True を返します。

以下のように、%SYSTEM.TSQLOpens in a new tab クラス・メソッドを使用するか、または TSQLAnsiNullsOpens in a new tab プロパティから、現在の ANSI_NULLS 設定を確認できます。

  SET context=##class(%SYSTEM.Context.SQL).%New()
  WRITE "ANSI_NULLS is = ",context.TSQLAnsiNulls

次の ObjectScript コマンドのいずれかを使用すると、システム全体で ANSI_NULLS をアクティブ (ON) または非アクティブ (OFF) に設定できます。

  WRITE ##class(%SYSTEM.TSQL).SetAnsiNulls("Sybase","OFF")
  SET ^%SYS("tsql","SET","ANSI_NULLS")="OFF"

CASEINSCOMPARE

CASEINSCOMPARE 設定では、'A'='a' のように大文字と小文字を区別せずに、同様に比較します。既定値は OFF です。このオプションを ON に設定すると、比較演算子 = および <> を使用した演算では、ほとんどのコンテキストで大文字と小文字が区別されなくなります。ただし、次の場合は大文字と小文字が区別されます。

  • JOIN で比較条件が ON のとき。

  • いずれかのオペランドがサブクエリのとき。

Caché SQL では上記の場合に %SQLUPPER 演算子を受け付けないため、これらは例外になっています。

以下のように、%SYSTEM.TSQLOpens in a new tab クラス・メソッドを使用するか、または TSQLCaseInsCompareOpens in a new tab プロパティから、現在の CASEINSCOMPARE 設定を確認できます。

  SET context=##class(%SYSTEM.Context.SQL).%New()
  WRITE "ANSI_NULLS is = ",context.TSQLCaseInsCompare

次の ObjectScript コマンドのいずれかを使用すると、システム全体で CASEINSCOMPARE をアクティブ (ON) または非アクティブ (OFF) に設定できます。

  WRITE ##class(%SYSTEM.TSQL).SetCaseInsCompare("Sybase","OFF")
  SET ^%SYS("tsql","SET","CASEINSCOMPARE")="OFF"

QUOTED_IDENTIFIER

QUOTED_IDENTIFIER 構成オプションにより、引用符で囲まれた識別子をサポートするかどうかを選択できます。既定はオフ (サポートしない) です。このオプションは、Caché 管理ポータルを使用して設定されます。QUOTED_IDENTIFIER がオンの場合、二重引用符が識別子の区切り文字として解析されます。QUOTED_IDENTIFIER がオフの場合、二重引用符が文字列リテラルの代替の区切り文字として解析されます。文字列リテラルの望ましい区切り文字は一重引用符です。

以下のように、%SYSTEM.TSQLOpens in a new tab クラス・メソッドを使用するか、または TSQLQuotedIdentifierOpens in a new tab プロパティから、現在の QUOTED_IDENTIFIER 設定を確認できます。

  SET context=##class(%SYSTEM.Context.SQL).%New()
  WRITE "ANSI_NULLS is = ",context.TSQLQuotedIdentifier

次の ObjectScript コマンドのいずれかを使用すると、システム全体で QUOTED_IDENTIFIER をアクティブ (ON) または非アクティブ (OFF) に設定できます。

  WRITE ##class(%SYSTEM.TSQL).SetQuotedIdentifier("Sybase","OFF")
  SET ^%SYS("tsql","SET","QUOTED_IDENTIFIER")="OFF"

TRACE

TRACE 構成オプションは、管理ポータルからは使用できません。これは、TSQL コンパイラの動作を制御します。TRACE をアクティブにしてメソッドをコンパイルすると、既定で、アクティブなログ・ファイルにトレース・メッセージが記録されます。アクティブなログ・ファイルは CACHE.DAT と同じネームスペースに配置され、現在のプロセス番号で名前が付けられています。

次の ObjectScript コマンドを使用すると、システム全体で TRACE をアクティブ (ON) または非アクティブ (OFF) に設定できます。

  SET ^%SYS("tsql","SET","TRACE")="ON"

既定値は ON (TRACE がアクティブ) です。

FeedbackOpens in a new tab