【问题标题】:How to insert data in the CLOB column (Oracle)如何在 CLOB 列中插入数据(Oracle)
【发布时间】:2020-05-28 05:53:20
【问题描述】:

我有表:TBL_SAMPLE

SAMPLE_ID - Primary Key
SAMPLE_CD - String
statusDateTime - DateTime
DATA_AREA - CLOB

我有这个架构:

<schema>
<parameterizationId label="Samp Id" mapField="SAMPLE_ID" dataType="string"/>
<statusDateTime required="true" dataType="dateTime" default="%CurrentDateTime" mapField="STATUS_UPD_DTTM"/>
<user default="%CurrentUser" mapField="USER_ID" dataType="string"/>
<dataArea type="group" mapXML="DATA_AREA">
    <accountId dataType="string"/>
    <saId dataType="string"/>
    <saTypeCode dataType="string"/>
    <endDate dataType="date"/>
    <beginBalAmt dataType="number"/>
</dataArea>

我需要填充 DATE_AREA CLOB 列,应该如下所示:(预期)

<accountId>0854215</accountId><saId>745152</saId><saTypeCode>TES</saTypeCode><endDate>16-Dec-2019</endDate><beginBalAmt>10525</beginBalAmt>

我有这个现有的 SQL:

INSERT INTO TBL_DIFF
SELECT
SA.ACCT_ID,SA.SA_ID,SA.SA_TYPE_CD,'31-DEC-16',0
FROM CI_SA SA

我想使用上面提供的预期输出使用此 sql 语句填充 DATA_AREA 列。该怎么做?

【问题讨论】:

标签: sql oracle oracle-sqldeveloper clob


【解决方案1】:

您只需要按如下方式使用串联:

INSERT INTO TBL_DIFF
    SELECT
        '<accountId>' || SA.ACCT_ID || '</accountId><saId>' || SA.SA_ID || '</saId><saTypeCode>' || SA.SA_TYPE_CD || '</saTypeCode><endDate>'
        || END_DATE || '</endDate><beginBalAmt>' || BEGINBALAMT || '</beginBalAmt>'
    FROM
        (
            SELECT
                SA.ACCT_ID,
                SA.SA_ID,
                SA.SA_TYPE_CD,
                '31-DEC-16' END_DATE,
                0 BEGINBALAMT
            FROM
                CI_SA SA
            WHERE
                SA.SA_TYPE_CD = 'LOAN'
        ); 

【讨论】:

  • 嗨,我需要的是使用我提供的 sql 语句的结果(参见现有 SQL 部分)而不是模式来填充 DATA_AREA (CLOB) 列。
  • 感谢 Tejash!但我希望它更新或插入您在我的 TBL_SAMPLE 的 DATA_AREA 列 (CLOB) 中提供的 SQL 的结果。这可能吗?
  • 是的,我已经在我的回答中写了,使用TO_CLOB 将此select 语句值插入到您的表中。
猜你喜欢
  • 2021-07-16
  • 1970-01-01
  • 1970-01-01
  • 2019-08-13
  • 2019-07-10
  • 2015-06-26
  • 2015-12-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多