%OBJECT
Synopsis
%OBJECT(stream)
引数
stream | ストリーム・フィールドの名前である式。 |
概要
%OBJECT を使用してストリーム・オブジェクトが開かれ、ストリーム・フィールドの oref (オブジェクト参照) が返されます。
ストリーム・フィールドでの SELECT は、ストリーム・フィールドの整形式 OID (オブジェクト ID) 値を返します。ストリーム・フィールドでの SELECT %OBJECT は、ストリーム・フィールドの oref (オブジェクト参照) を返します。以下の例に示すとおり、Notes および Picture はいずれもストリーム・フィールドです。
ZNSPACE "SAMPLES"
SET myquery = "SELECT TOP 3 Title,Notes,%OBJECT(Picture) AS Photo FROM Sample.Employee"
SET tStatement = ##class(%SQL.Statement).%New()
SET qStatus = tStatement.%Prepare(myquery)
IF qStatus'=1 {WRITE "%Prepare failed:" DO $System.Status.DisplayError(qStatus) QUIT}
SET rset = tStatement.%Execute()
WHILE rset.%Next() {
WRITE "String field: ",rset.Title,!
WRITE "Stream field oid: ",rset.Notes,!
WRITE "Stream field oref: ",rset.Photo,!!
}
WRITE !,"End of data"
stream がストリーム・フィールドでない場合、%OBJECT は SQLCODE -128 エラーを発行します。
%OBJECT は、以下の関数に対する引数として使用できます。
-
CHARACTER_LENGTH(%OBJECT(streamfield))、CHAR_LENGTH(%OBJECT(streamfield))、または DATALENGTH(%OBJECT(streamfield))
-
SUBSTRING(%OBJECT(streamfield),start,length)
ストリーム・フィールドで SELECT を発行し、oid から oref を生成する $Stream.Object.%Open()Opens in a new tab クラス・メソッドを呼び出してこのストリーム oid を開くことでも、同じ操作を実行することができます。
SET oref = ##class(%Stream.Object).%Open(oid)
oref の詳細は、"Caché オブジェクトの使用法" の “OREF の基本” を参照してください。oid の詳細は、上記と同じドキュメントの “保存したオブジェクトの識別子 : ID および OID” を参照してください。
関連項目
-
"Caché オブジェクトの使用法" の “永続オブジェクトの概要” の章にある "既定の SQL プロジェクションの概要"
-
"Caché オブジェクトの使用法" の “ストリーム” の章にある "SQL でのストリームの使用法"
-
"Caché SQL の使用法" の "BLOB と CLOB の格納と使用" の章