美文网首页SQL
第102章 SQL函数 %OBJECT

第102章 SQL函数 %OBJECT

作者: Cache技术分享 | 来源:发表于2022-04-05 09:10 被阅读0次

    第102章 SQL函数 %OBJECT

    标量函数,它打开一个流对象并返回相应的 oref

    大纲

    %OBJECT(stream)
    

    参数

    • stream - 作为流字段名称的表达式。

    描述

    %OBJECT 用于打开一个流对象并返回流字段的 oref(对象引用)。

    流字段上的 SELECT 返回流字段的完全形成的 oid(对象 ID)值。流字段上的 SELECT %OBJECT 返回流字段的 oref(对象引用)。这在以下示例中显示,其中 NotesPicture 都是流字段:

    /// d ##class(PHA.TEST.SQLFunction).Object()
    ClassMethod Object()
    {
        s myquery = "SELECT TOP 3 Title,Notes,%OBJECT(Picture) AS Photo FROM Sample.Employee"
        s tStatement = ##class(%SQL.Statement).%New()
        s qStatus = tStatement.%Prepare(myquery)
        s rset = tStatement.%Execute()
        while rset.%Next() {
            w "String field: ",rset.Title,!
            w "Stream field oid: ",rset.Notes,!
            w "Stream field oref: ",rset.Photo,!!
        }
        w !,"End of data"
    }
    
    
    DHC-APP>d ##class(PHA.TEST.SQLFunction).Object()
    String field: test
    Stream field oid:
    Stream field oref:
     
    String field: Assistant Systems Engineer
    Stream field oid:
    Stream field oref:
     
    String field: Systems Engineer
    Stream field oid:
    Stream field oref:
     
     
    End of data
    

    如果 stream 不是流字段,则 %OBJECT 生成 SQLCODE -128 错误。

    %OBJECT 可用作以下函数的参数:

    CHARACTER_LENGTH(%OBJECT(streamfield)), CHAR_LENGTH(%OBJECT(streamfield)), or DATALENGTH(%OBJECT(streamfield)).
    
    SUBSTRING(%OBJECT(streamfield),start,length).
    

    可以通过在流字段上发出 SELECT 来执行相同的操作,然后通过调用 $Stream.Object.%Open() 类方法打开流 oid,该方法从 oid 生成一个 oref

    SET oref = ##class(%Stream.Object).%Open(oid)
    

    相关文章

      网友评论

        本文标题:第102章 SQL函数 %OBJECT

        本文链接:https://www.haomeiwen.com/subject/qofksrtx.html