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?

%OBJECT

ストリーム・オブジェクトを開き、対応する oref を返すスカラ関数です。

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” を参照してください。

関連項目

FeedbackOpens in a new tab