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?

%EXTERNAL

DISPLAY 形式の式を返す形式変換関数です。

Synopsis

%EXTERNAL(expression)

%EXTERNAL expression

引数

expression 変換される式。 フィールド名、フィールド名を含む式、または変換可能なデータ型で値を返す関数 (DATE や %List など)。ストリーム・フィールドにすることはできません。

概要

%EXTERNAL は、現在選択されているモード (表示モード) に関係なく、expression を DISPLAY 形式に変換します。DISPLAY 形式は、 フィールドやデータ型の LogicalToDisplay メソッドによってどのようなデータ変換が実行されても、VARCHAR データ型でデータを表します。

通常、%EXTERNAL は、SELECT リストの select-item で使用されます。WHERE 節内で使用できますが、%EXTERNAL を使用すると指定されたフィールドでインデックスを使用できなくなるので、使用しないことをお勧めします。

%EXTERNAL を適用すると、列見出し名が “Expression_1” などの値に変更されます。したがって、後述の例で示すように、通常は列名のエイリアスを指定することをお勧めします。

%EXTERNAL による変換にかかわらず、日付は、日付フィールドまたは関数によって返されるデータ型に依存しています。%EXTERNAL は、CURDATECURRENT_DATECURTIME、および CURRENT_TIME の値を変換します。CURRENT_TIMESTAMPGETDATEGETUTCDATENOW、および $HOROLOG の値は変換しません。

%EXTERNAL によって %List 構造が DISPLAY 形式に変換されると、表示されるリスト要素は、空白スペースで区切られます。この “スペース” は実際には、CHAR(13) と CHAR(10) という 2 つの非表示文字です。

%EXTERNAL は、Caché SQL の拡張です。

現在の選択モードに関係なく expression を LOGICAL 形式に変換するには、%INTERNAL 関数を使用します。現在の選択モードに関係なく expression を ODBC 形式に変換するには、%ODBCOUT 関数を使用します。

表示形式オプションの詳細は、"Caché SQL の使用法" の “Caché SQL の基礎” の章にある “データ表示オプション” を参照してください。

以下のダイナミック SQL の例では、DOB (誕生日) データ値を現在の選択モード形式で返し、%EXTERNAL 関数を使用して同じデータを返します。デモンストレーションのため、このプログラムでは、%SelectMode 値は、呼び出すごとにランダムに決定されます。

  ZNSPACE "SAMPLES"
  SET tStatement = ##class(%SQL.Statement).%New()
  SET tStatement.%SelectMode=$RANDOM(3)
    IF tStatement.%SelectMode=0 {WRITE "Select mode LOGICAL",! }
    ELSEIF tStatement.%SelectMode=1 {WRITE "Select mode ODBC",! }
    ELSEIF tStatement.%SelectMode=2 {WRITE "Select mode DISPLAY",! }
  SET myquery = 2
  SET myquery(1) = "SELECT TOP 5 DOB,%EXTERNAL(DOB) AS ExtDOB "
  SET myquery(2) = "FROM Sample.Person"
  SET qStatus = tStatement.%Prepare(.myquery)
    IF qStatus'=1 {WRITE "%Prepare failed:" DO $System.Status.DisplayError(qStatus) QUIT}
  SET rset = tStatement.%Execute()
  DO rset.%Display()
  WRITE !,"End of data"

以下の例では、この関数の 2 つの構文形式を示します。それ以外は同じです。%List フィールドの %EXTERNAL (DISPLAY 形式)、%INTERNAL (LOGICAL 形式)、および %ODBCOUT (ODBC 形式) を指定します。

SELECT TOP 10 %EXTERNAL(FavoriteColors) AS ExtColors,
              %INTERNAL(FavoriteColors) AS IntColors,
              %ODBCOUT(FavoriteColors) AS ODBCColors
FROM Sample.Person
SELECT TOP 10 %EXTERNAL FavoriteColors AS ExtColors,
              %INTERNAL FavoriteColors AS IntColors,
              %ODBCOUT FavoriteColors AS ODBCColors
FROM Sample.Person

以下の例では、誕生日 (DOB) および丸めた誕生日 (DOB) の値を %EXTERNAL (DISPLAY 形式) に変換します。

SELECT %EXTERNAL(DOB) AS DOB,
       %INTERNAL(ROUND(DOB,-3)) AS DOBGroup,
       %EXTERNAL(ROUND(DOB,-3)) AS RoundedDOB
FROM Sample.Person
GROUP BY (ROUND(DOB,-3))
ORDER BY DOBGroup

関連項目

FeedbackOpens in a new tab