%INTERNAL
Synopsis
%INTERNAL(expression) %INTERNAL expression
引数
expression | 変換される式。 フィールド名、フィールド名を含む式、または変換可能なデータ型で値を返す関数 (DATE や %List など)。 |
概要
%INTERNAL は、現在選択されているモード (表示モード) に関係なく、expression を LOGICAL 形式に変換します。LOGICAL 形式は、データのメモリ内形式です (処理が実行される形式)。通常、%INTERNAL は、SELECT リストの select-item で使用されます。
%INTERNAL は、WHERE 節内で使用できますが、%INTERNAL を使用すると指定されたフィールドでインデックスを使用できなくなり、%INTERNAL は、フィールドに既定の照合がある場合でも、すべての比較で無条件に大文字小文字を区別するので、使用しないことを強くお勧めします。
%INTERNAL を適用すると、列見出し名が “Expression_1” などの値に変更されます。したがって、後述の例で示すように、通常は列名のエイリアスを指定することをお勧めします。
%INTERNAL は、データ型 %Date の値を INTEGER データ型の値に変換します。%INTERNAL は、データ型 %Time の値を NUMERIC (15,9) データ型の値に変換します。この変換が行われるのは、ODBC または JDBC のクライアントで Caché の論理 %Date 値および %Time 値が認識されないためです。
%INTERNAL による変換にかかわらず、日付は、日付フィールドまたは関数によって返されるデータ型に依存しています。%INTERNAL は、CURDATE、CURRENT_DATE、CURTIME、および CURRENT_TIME の値を変換します。CURRENT_TIMESTAMP、GETDATE、GETUTCDATE、NOW、および $HOROLOG の値は変換しません。
ストリーム・フィールドは、すべての形式変換関数を含めて、Caché の単項関数に対する引数に指定することはできません。ただし、%INTERNAL は例外です。%INTERNAL 関数では、expression の値としてストリーム・フィールドが許可されますが、そのストリーム・フィールドに対する操作は実行されません。
%INTERNAL は、Caché SQL の拡張です。
現在の選択モードに関係なく expression を DISPLAY 形式に変換するには、%EXTERNAL 関数を使用します。現在の選択モードに関係なく expression を ODBC 形式に変換するには、%ODBCOUT 関数を使用します。
表示形式オプションの詳細は、"Caché SQL の使用法" の “Caché SQL の基礎” の章にある “データ表示オプション” を参照してください。
例
以下のダイナミック SQL の例では、DOB (誕生日) データ値を現在の選択モード形式で返し、%INTERNAL 関数を使用して同じデータを返します。デモンストレーションのため、このプログラムでは、%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,%INTERNAL(DOB) AS IntDOB "
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