如何在动态查询中使用clob数据类型字段

时间:2016-01-31 14:25:05

标签: oracle plsql oracle11g

我必须在选择查询中添加几个字段。

为此,有一个名为INSTRUCTION的表,其中在一个名为STEPS的字段中,在动态插入查询的帮助下插入了选择查询。

我添加了要提取的字段,但是当我运行此动态插入查询以将select查询插入STEPS INSTRUCTION表的STEPS列/字段时,我遇到了{的长度问题{1}}列,其数据类型为varchar2(4000)最大长度,我想现在我要插入的select语句的长度是4850.

我尝试将字段STEPS修改为clob,然后尝试执行相同的动态插入查询以插入INSTRUCTION表,但它再次失败并使用character string buffer too small。我试图在select语句中使用TO_CLOB(来自select的字段)为所有字段包装我选择的字段,但它会抛出相同的错误。

请帮我解决这个问题

1 个答案:

答案 0 :(得分:0)

我有两种方法,

  1. 要通过Google搜索,将表格中的字段更改为CLOB数据类型 我们找到了一个答案,即单个ALTER语句无法做到这一点 需要引入一个临时变量varchar2并将其更改为long 然后去clob。稍后会发布代码......
  2. 以下是步骤

    • 将原始表名重命名为original_table_bkp
    • 使用与原始表相同的DDL到create具有相同名称的表,这里我们计划创建原始表 数据类型为CLOB,请确保提供授权
    • Insert从original_table_bkp表到original_table的记录(使用新的clob数据类型字段)
    • drop original_table_bkp

    谢谢!