首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Intersystems caché- sql存储定义

Intersystems caché- sql存储定义
EN

Stack Overflow用户
提问于 2015-02-23 15:41:11
回答 1查看 287关注 0票数 0

如何设置%Dictionary.StorageSQLMapDefinition类的名称属性?我有这样的代码:

代码语言:javascript
复制
set storMaps = ##class(%Dictionary.StorageSQLMapDefinition).%New()
set storMaps.Name = ?????

我不知道如何设置storMaps.Name。名称支柱的数据类型。根据文档显示是%Dictionary.SQLIdentifier。但我不知道该怎么设置这个财产。我收到一个错误:

SQL类型无效

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-23 19:58:42

你可能忘记了%Dictionary.StorageDefintion。

代码语言:javascript
复制
    set clsDef=##class(%Dictionary.ClassDefinition).%OpenId("User.Test")

    set storage=##class(%Dictionary.StorageDefinition).%New()
    set storage.Name="Test"
    set storage.Type="%CacheSQLStorage" // this is important

    set storageMap=##class(%Dictionary.StorageSQLMapDefinition).%New()
    set storageMap.Name="MasterMap"
    set storageMap.Global="^global"
    do storage.SQLMaps.Insert(storageMap)

    set data=##class(%Dictionary.StorageSQLMapDataDefinition).%New()
    set data.Name="name"
    set data.Node=1
    do storageMap.Data.Insert(data)

    set data=##class(%Dictionary.StorageSQLMapDataDefinition).%New()
    set data.Name="type"
    set data.Node=2
    do storageMap.Data.Insert(data)

    set subscript=##class(%Dictionary.StorageSQLMapSubDefinition).%New()
    set subscript.Name=1
    set subscript.Expression="""test"""
    do storageMap.Subscripts.Insert(subscript)

    set subscript=##class(%Dictionary.StorageSQLMapSubDefinition).%New()
    set subscript.Name=2
    set subscript.Expression="{ID}"
    do storageMap.Subscripts.Insert(subscript)

    set rowidspec=##class(%Dictionary.StorageSQLMapRowIdSpecDefinition).%New()
    set rowidspec.Name=1
    set rowidspec.Expression="{L2}"
    set rowidspec.Field="ID"
    do storageMap.RowIdSpecs.Insert(rowidspec)

    do clsDef.Storages.Insert(storage)
    set tSC=clsDef.%Save()

上面的代码将创建这样的存储

代码语言:javascript
复制
<Storage name="Test">
<SQLMap name="MasterMap">
<Data name="name">
<Node>1</Node>
</Data>
<Data name="type">
<Node>2</Node>
</Data>
<Global>^global</Global>
<RowIdSpec name="1">
<Expression>{L2}</Expression>
<Field>ID</Field>
</RowIdSpec>
<Subscript name="1">
<Expression>"test"</Expression>
</Subscript>
<Subscript name="2">
<Expression>{ID}</Expression>
</Subscript>
</SQLMap>
<Type>%CacheSQLStorage</Type>
</Storage>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28677480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档