C# InterSystems CachéODBC-最大结果长度

C# InterSystems CachéODBC-最大结果长度,c#,intersystems-cache,intersystems,C#,Intersystems Cache,Intersystems,我使用ODBC查询系统间Cachédb 在C中,我做: DbCommand.CommandText = "select Class_getTablesMetaXml('globalName') As returnStr"; OdbcDataReader reader = DbCommand.ExecuteReader(); 一切正常,但如果returnStr超过16374个字符,returnStr在C中似乎是空的 根据doc,我应该使用CStream%String数据类型,但我不知道如何实现它

我使用ODBC查询系统间Cachédb

在C中,我做:

DbCommand.CommandText = "select Class_getTablesMetaXml('globalName') As returnStr";
OdbcDataReader reader = DbCommand.ExecuteReader();
一切正常,但如果returnStr超过16374个字符,returnStr在C中似乎是空的

根据doc,我应该使用CStream%String数据类型,但我不知道如何实现它

我的caché过程方法如下所示:

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

在配置中,我选中了:启用长字符串


在查询之后,选择类_getTablesMetaXml'globalName'作为returnStr,我得到XML字符串。但如果长度超过16374,我会在我的C应用程序中得到空字符串,我使用ODBC进行查询。我需要解决它或者做一些事情,比如获取15000长度的字符串,然后第二个字符串,我将在我的appc中连接,但我绝对不知道如何做

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

,因为我不是c开发人员,您能再添加一些这样的代码吗?因为我无法用其他语言和工具解决这样的问题。我尝试了JDBC和一些ODBC工具。我编辑了我的问题:你使用哪个版本?我再次编辑了我的问题:我编辑了你的标题。请看,如果一致意见是否定的,则不应该。Thx for%XML.Writer建议