Как установить %Dictionary.StorageSQLMapDataDefinition.RetrievalCode?

Как я могу это сделать:

<Data name="hyperlink">
<RetrievalCode>
<![CDATA[set res=""
    set colId=""
    for
    {
        set colId = $order( ^ohtest("mltab","main","Dta",{L4},colId) )
        quit:(colId = "")

        set indexTab = $g(^ohtest("mltab","main","Dta",{L4},colId,"Index"))
        if indexTab'="" {
            set res = res_"<hyperlinkIndexTab><colId>"_colId_"</colId><iTab>"_indexTab_"</iTab></hyperlinkIndexTab>"
        }
    }
    s {hyperlink}=res]]></RetrievalCode>
</Data>

программно?

У меня есть:

            set global = "^ohtest"
            set iTab="main"

            //hyperlink
            set storData = ##class(%Dictionary.StorageSQLMapDataDefinition).%New()
            set storData.Name = "hyperlink"
            set storData.RetrievalCode = "<![CDATA[set res="""" set colId="""" for{set colId = $order( "_global_"(""mltab"","_iTab_",""Dta"",{L4},colId) ) quit:(colId = """") set indexTab = $g("_global_"(""mltab"","_iTab_",""Dta"",{L4},colId,""Index"")) if indexTab'="""" {set res = res_""<hyperlinkIndexTab><colId>""_colId_""</colId><iTab>""_indexTab_""</iTab></hyperlinkIndexTab>""}} s {hyperlink}=res]]>"
            do storMap.Data.Insert(storData)

Но это не работает. Как позволить генерировать код, указанный выше?


person mrfazolka    schedule 05.03.2015    source источник


Ответы (1)


ваша первая проблема заключается в том, чтобы поместить объявление CDATA в код. Caché добавит без вас, а iTab потом без кавычек поставите.

    set global = "^ohtest"
    set iTab="main"

    set data=##class(%Dictionary.StorageSQLMapDataDefinition).%New()
    set data.Name="hyperlink"
    set code=""
    set code=code_"set res="""""_$c(13,10)
    set code=code_"set colId="""""_$c(13,10)
    set code=code_"for"_$c(13,10)
    set code=code_"{"_$c(13,10)
    set code=code_"  set colId = $order( "_global_"(""mltab"","""_iTab_""",""Dta"",{L4},colId) )"_$c(13,10)
    set code=code_"  quit:(colId = """")"_$c(13,10)
    set code=code_"  set indexTab = $g("_global_"(""mltab"","""_iTab_""",""Dta"",{L4},colId,""Index""))"_$c(13,10)
    set code=code_"  if indexTab'="""" {"_$c(13,10)
    set code=code_"    set res = res_""<hyperlinkIndexTab><colId>""_colId_""</colId><iTab>""_indexTab_""</iTab></hyperlinkIndexTab>"""_$c(13,10)
    set code=code_"  }"_$c(13,10)
    set code=code_"}"_$c(13,10)
    set code=code_"s {hyperlink}=res"_$c(13,10)
    set data.RetrievalCode=code
    do storMap.Data.Insert(data)
person DAiMor    schedule 05.03.2015