首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >InterSystems CachéODBC -最大结果长度

InterSystems CachéODBC -最大结果长度
EN

Stack Overflow用户
提问于 2015-05-04 12:44:34
回答 1查看 241关注 0票数 1

我使用ODBC查询InterSystems Cachédb。

在C#中,我需要:

代码语言:javascript
复制
DbCommand.CommandText = "select Class_getTablesMetaXml('globalName') As returnStr";
OdbcDataReader reader = DbCommand.ExecuteReader();

一切正常,但是如果returnStr大于16374字符,returnStr在C#中似乎是空的。

根据doc (长串),我应该使用CStream%String数据类型,但我不知道如何实现。

我的caché程序方法看起来如下:

代码语言:javascript
复制
ClassMethod getTablesMetaXml(globalName As %String) As %String [ SqlProc ]
{
    set global = "^"_globalName

    set xmlString = "<global><name>"_globalName_"</name>"

    set tableCount = 0
    set iTab = ""
    for
    {
        set tableCount = tableCount+1
        set iTab = $order( @global@("tab", iTab) )
        quit:(iTab = "")

        set xmlString = xmlString _ "<table>"
        set xmlString = xmlString _     "<title>"_@global@("tab", iTab, "Name")_"</title>"
        set xmlString = xmlString _     "<indexTab>"_iTab_"</indexTab>"

        set i=""
        set propCount = 0
        for
        {
            set propCount = propCount + 1
            set i = $order( @global@("tab",iTab,"sMeta", i) )
            quit:(i = "")

            set xmlString = xmlString _ "<col>"
            set xmlString = xmlString _     "<title>" _ ..zcvXml(@global@("tab",iTab,"sMeta",i)) _ "</title>"
            set xmlString = xmlString _     "<name>prop" _ propCount _ "</name>"
            set xmlString = xmlString _     "<format>" _ ..zcvXml($g(@global@("tab",iTab,"sMeta",i,"Format"))) _ "</format>"
            set xmlString = xmlString _ "</col>"
        }
    set xmlString = xmlString _ "</table>"
    }

    set xmlString = xmlString _ "</global>"

    q xmlString
}

我的Caché版本是:2009.1.3 (Build 704U)

在我已经检查的配置中:启用长字符串

在查询"select Class_getTablesMetaXml('globalName') As returnStr"之后,我得到XML。但是如果它的长度超过16374,我会在我的C#应用程序中得到空字符串,在那里我使用ODBC进行查询。我需要解决这个问题,或者做一些事情,比如得到长度为15000的字符串,然后在我的应用程序(c#)中连接第二个字符串,但是我绝对不知道怎么做。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-05 08:47:17

要使用CStream%字符串,您应该在SqlProc中将返回类型从%String更改为%GlobalCharacterStream,并更改代码,因为它是Stream。对于生成XML,请尝试使用%XML.Writer

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30030525

复制
相关文章

相似问题

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