ORACLE存储过程,参数字符串太长

在做存储过程开发的时候,需要拼SQL语句,比如

DECLARE

V_SQL VARCHAR2(32000);

BEGIN

V_SQL := 'INSERT INTO TB_TA(COUNTER0001,COUNTER0002.......COUNTER1000)

SELECT

公式1,

公式2,

......

公式10000

from

TB_BASE BASE

LEFT JOIN TB_COUNTER0001 T0001 ON T0001.A = BASE.A

LEFT JOIN TB_COUNTER0002 T0002 ON T0002.A = BASE.A

......

LEFT JOIN TB_COUNTER1000 T1000 ON T1000.A = BASE.A';

EXECUTE IMMEDIATE V_SQL;

COMMIT;

END;

但是这个SQL语句很大很大,绝对的超过了32767限制,而且就算拆成小段也会超过,比如这么拆:

DECLARE

V_INSERT VARCHAR2(32000);

V_FORMATE VARCHAR2(32000);

V_TABLE VARCHAR2(32000);

BEGIN

V_INSERT := '(COUNTER0001,COUNTER0002.......COUNTER1000)';

V_FORMATE := '公式1,公式2,......公式10000';

V_TABLE := '

LEFT JOIN TB_COUNTER0001 T0001 ON T0001.A = BASE.A

LEFT JOIN TB_COUNTER0002 T0002 ON T0002.A = BASE.A

......

LEFT JOIN TB_COUNTER1000 T1000 ON T1000.A = BASE.A';

EXECUTE IMMEDIATE 'INSERT INTO TB_TA' || V_INSERT ||

'SELECT'||

V_FORMATE ||

'from

TB_BASE BASE' || V_TABLE;

EXECUTE IMMEDIATE V_SQL;

COMMIT;

END;

V_FORMATE就已经超过了,现在已经不知所措,问问大侠有没有方法可以解决。

我自己有个设想,就是把这些丢到BOLB里面去,

然后写一个函数FUN_BOOLTOVARCHAR2,

然后执行

EXECUTE IMMEDIATE FUN_BOOLTOVARCHAR2(BOLB_SQL);

COMMIT;

但是不知道可行性怎么样?

请各位大侠看看!

拜谢!!

------最佳解决方案--------------------

1 CLOB就可以了

2 长SQL面临解析的问题,不是存个字符串就能搞定的。

------其他解决方案--------------------

引用:1 CLOB就可以了

2 长SQL面临解析的问题,不是存个字符串就能搞定的。

大侠

可以直接

DECLARE

CLOB_SQL CLOB;

BEGIN

EXECUTE IMMEDIATE CLOB_SQL;

END;

这样么?

没有用过CLOB。。。

------其他解决方案--------------------

好吧 问题已经解决了 谢谢

oracle字段大段字符串,ORACLE存储过程,参数目字符串太长相关推荐

  1. oracle回滚段创建,Oracle回滚段管理

    Oracle回滚段管理 回滚段管理一直是ORACLE数据库管理的一个难题,本文通过实例介绍ORACLE回滚段的概念 回滚段概述 回滚段用于存放数据修改之前的值(包括数据修改之前的位置和值).回滚段的头 ...

  2. 小程序 url 对象转字符串编码传参 url 字符串转对象解码接收参数

    url 对象转字符串编码传参 let info = encodeURI(JSON.stringify(this.data.info));wx.navigateTo({url: '/pages/part ...

  3. oracle字段公式怎么执行,Oracle 在存储过程或函数中执行字符串sql PDF 下载

    主要内容: 有时,我们需要在存储过程或函数中根据条件拼凑一些sql字符串语句,然后再执行拼凑后的sql字符串,如何做到呢? 参考以下代码: FUNCTION CALCULATE_TARGET_SCOR ...

  4. oracle 建表字段设置,Oracle创建表、删除表、修改表(添加字段、修改字段、删除字段)语句总结...

    关于Oracle创建表.删除表.修改表(添加字段.修改字段.删除字段)语句的简短总结. Oracle创建表: create table 表名 ( 字段名1 字段类型 默认值 是否为空 , 字段名2 字 ...

  5. oracle字段名命名规范,oracle 表字段命名规范

    命名一律为大写字母(或小写,不要大下写混合)英文单词单数命名.例:FACTORY 英文单词缩写命名.例:DEPT 英文单词之间用下划线连结,且每个单词皆为单数.例:TASK_RESULT 用来存储历史 ...

  6. oracle字段逗号拆分,Script:oracle拆分逗号分隔字符串 实现split

    如果一个字符串中有像逗号或其它符号分隔,你想把它折分成列,如'first field, second field , third field', 拆成 first field second field ...

  7. windows oracle 内存大,如何设计Oracle数据库内存的大小

    SGA:是用于存储数据库信息的内存区,该信息为数据库进程所共享.它包含Oracle 服务器的数据和控制信息,它是在Oracle服务器所驻留的计算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写 ...

  8. oracle 字段加密解密方法,oracle 字段加密解密方法

    要用到DECRYPT方法对数据解密和ENCRYPT方法加密 1.首先通过sys用户登录到oracle数据库,因为我们要通过这个用户来设置一些高级权限 grant execute on DBMS_cry ...

  9. oracle设置大表空间,Oracle怎样设置表空间数据文件大小

    这篇文章主要介绍了Oracle如何设置表空间数据文件大小,文中讲解非常细致,帮助大家更好的理解和学习,感兴趣的朋友可以了解下 Oracle数据文件默认大小上限是32G,如果要数据文件大于32G,需要在 ...

最新文章

  1. 销售必备心灵鸡汤(转)
  2. 谈SOA在国内推进状况
  3. 【IBatisNet Spring.Net】ORM与IOC 简单配置
  4. 基于高斯分布的异常检测算法 项目描述
  5. SpringBoot 工程目录 整合mybatis-mysql(注解类型)
  6. [论文阅读] Scene Context-Aware Salient Object Detection
  7. 学 shell (1/5)
  8. Git教程——为什么要掌握Git以及Git的安装
  9. Linux Shell 中 ()、(())、[]、[[]]、{} 的作用
  10. android时间显示秒,MIUI 12桌面如何显示带秒时钟?
  11. 纯js实现类似淘宝星级评分功能
  12. 完美池宇峰畅谈创业点滴 男怕入错行
  13. 直播源代码中关于手机直播平台开发的登陆注册介绍
  14. 那些年的,那些人的,那些事。
  15. 给你的数据加上杠杆:文本增强技术的研究进展及应用实践
  16. 数据独立性(物理独立性+逻辑独立性)
  17. linux之修改静态ip,修改网卡名称为eth0,以及iso装系统后的配置ip
  18. Nginx+FFmpeg rtsp转flv实时预览
  19. 硬件检测新锐:Z武器
  20. CCNA lab 随身日记之OSPF

热门文章

  1. c程序设计语言_习题8-4_重新实现c语言的库函数fseek(FILE*fp,longoffset,intorigin)
  2. 动态修改迅雷的下载地址
  3. HDFS之SequenceFile和MapFile
  4. RunnableException与CheckedException
  5. 【java】staitc
  6. 负载均衡策略深入剖析
  7. html 复选框 mysql_Html:实现带复选框的下拉框(一)
  8. github创建静态页面_如何在10分钟内使用GitHub Pages创建免费的静态站点
  9. keras bi-lstm_LSTM用于文本生成的应用介绍-使用Keras和启用GPU的Kaggle Kernels
  10. linux内核功能有,好消息!LINUX内核2.6.18终于支持实时功能了