【问题标题】:Replace function not working for long query in ORACLE/PLSQL?替换函数不适用于 ORACLE/PLSQL 中的长查询?
【发布时间】:2018-10-01 14:03:05
【问题描述】:

我已经尝试运行replace Function for long query可能长度大于4000,该函数返回错误

ORA-01704:字符串文字太长。

除了使用 Replace 函数来替换 Oracle SQL 中的字符,还有其他替代方法吗?

查询:

Select REPLACE('VERY_LONG_QUERY','''','''''') FROM DUAL;

【问题讨论】:

  • 将长查询分离成更小的子查询,然后在替换后将它们重新组合在一起?
  • Oracle 对 SQL 中的字符文字有 4000 个字节的硬限制。在 PL/SQL 块中(这不是您在问题中显示的内容 - 那是纯 SQL),您可以处理高达 32k 的字符文字
  • 请检查我的回答,如果它对您有帮助,请接受它或为给定的解决方案提供相关反馈(cmets)。请阅读:stackoverflow.com/help/someone-answers 以了解为什么它很重要。

标签: sql oracle replace


【解决方案1】:

我不确定它是否适用于 11g 或哪个是您的 Oracle 版本,但这适用于 12c(从 Sql developer latest version 尝试)。 使用BIND 变量来分配长字符串,然后运行你的sql查询

VARIABLE VERY_LONG_QUERY VARCHAR2(32767);
EXEC :VERY_LONG_QUERY := 'select * from something...........greater than 4000';
Select REPLACE(:VERY_LONG_QUERY,'''','''''') FROM DUAL;

同样,如果我在 PL/SQL 中执行此操作,它应该可以正常工作。

【讨论】:

  • 它在我的 sqldeveloper 和 Oracle 11g 中不起作用,而是给我一个错误 ORA-01460-“未实现或不合理的转换请求”
  • @Saman:是的,直到您升级到 12 c 并使用最新的 sql 开发人员,拆分是您唯一的选择
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-24
  • 1970-01-01
  • 2011-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多