【问题标题】:Why is this string: javax.sql.rowset.serial.SerialClob being included in an output file instead of the actual value为什么这个字符串:javax.sql.rowset.serial.SerialClob 被包含在输出文件中,而不是实际值
【发布时间】:2015-04-13 14:16:22
【问题描述】:

我正在使用 Mirth 3.1.0.x 从 Sql Server 2012 数据库中提取数据并将结果集写入平面文件。

在添加新列之前,该代码正在运行。

这是 Mirth Channel 目的地的转换器脚本中的代码:

var dbConn = DatabaseConnectionFactory.createDatabaseConnection('net.sourceforge.jtds.jdbc.Driver','jdbc:jtds:sqlserver://10.10.1.74:1433/rRIS_California','rRIS_California','rRIS_California');    
var result1 = dbConn.executeCachedQuery("exec [z_SelectChannelData] 'AAI'");   

while(result1.next())
{         
   tmp.row += <row>
                      <LastName>"{result1.getString('LastName')}"</LastName>
                      <FirstName>"{result1.getString('FirstName')}"</FirstName>
                      <HomePhone>"{result1.getString('HomePhone')}"</HomePhone>
                      <MRN>"{result1.getString('MRN')}"</MRN>
                      <EncounterID>"{result1.getString('EncounterID')}"</EncounterID>
                      <Accession>"{result1.getString('Accession')}"</Accession>
                      <Modality>"{result1.getString('Modality')}"</Modality>
                      <Procedure>"{result1.getString('ProcedureCode')}"</Procedure>
                      <Location>"{result1.getString('Location')}"</Location>                         
                      <PreferredLanguage>"{result1.getString('PreferredLanguage')}"</PreferredLanguage>
                      <Gender>"{result1.getString('Gender')}"</Gender>
                      <EmailAddress>"{result1.getString('EmailAddress')}"</EmailAddress>
                      <MobilePhoneNumber>"{result1.getString('MobilePhoneNumber')}"</MobilePhoneNumber>
                      <Room>"{result1.getString('Room')}"</Room>                                  
                      <billing_code>"{result1.getString('billing_code')}"</billing_code>
                      <copay>"{result1.getString('copay')}"</copay>
                 </row>; 
}    
dbConn.close();

在文件输出中,最后一列不是由实际值填充,而是由以下字符串填充:

“共付”

“javax.sql.rowset.serial.SerialClob@1b795929”

“javax.sql.rowset.serial.SerialClob@5693cfb7”

下面是最后一列的 T-SQL:

Select    
CASE WHEN v.copay is null THEN '' WHEN v.copay =0 THEN '' ELSE cast(v.copay as varchar(max)) END as copay
FROM <table> as v

【问题讨论】:

  • 使用 JavaScript?这段代码看起来不会编译?我怀疑这是 Java,您正在对 SerialClob 对象调用 toString。
  • 我是 Mirth 的新手,整个脚本中显示的代码片段与 Mirth Connect 中已定义目标的转换器类相关联。

标签: java sql-server-2012 mirth


【解决方案1】:

你可以试试这样的。

var clob = result1.getClob("copay");
var result = clob.getSubString(1,clob.length());

然后将结果放入copay标签内。

【讨论】:

    【解决方案2】:

    将转换从 varchar(max) 更改为 varchar(20),实际列值由下面的 sql 显示。感谢 Evan Knowles 和 kucing_terbang 找到了答案。

    SELECT
    CASE WHEN v.copay is null THEN '' WHEN v.copay =0 THEN '' ELSE cast(v.copay as varchar(20)) END as copay
    FROM <table> v
    

    【讨论】:

    • 我在使用 VARCHAR(MAX) 时遇到了同样的问题,这帮助我免于追逐兔子。我可以建议改写或简化答案吗?这是我在 Google 中排名第一的搜索。
    猜你喜欢
    • 2021-07-30
    • 2020-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-18
    • 1970-01-01
    相关资源
    最近更新 更多