样本代码:

DROP PROCEDURE QUOTATION.COPY_SAMPLE;
CREATE PROCEDURE QUOTATION.COPY_SAMPLE (IN tableNameFrom VARCHAR(30), IN tableNameTo VARCHAR(30), INOUT copyResult INTEGER)BEGINDECLARE SQLCODE INTEGER DEFAULT 0;SET copyResult = 0;-- Proecss 1BEGINDECLARE fromSql VARCHAR(32672);DECLARE toSql VARCHAR(32672);DECLARE seqTo VARCHAR(30);DECLARE templateParserId INTEGER;DECLARE uuid VARCHAR(36);DECLARE stmt STATEMENT;DECLARE curs CURSOR FOR stmt;SET seqTo = 'SEQ_' || tableNameTo;SET fromSql = 'SELECT MAX(TEMPLATE_PARSER_ID), UUID FROM QUOTATION.' || tableNameFrom || ' GROUP BY UUID';PREPARE stmt FROM fromSql;OPEN curs;CURSORLOOP:LOOPFETCH curs INTO templateParserId, uuid;-- Do nothing if no data or processed all datas.IF SQLCODE = 100 THEN LEAVE CURSORLOOP;END IF;SET uuid = (SELECT CONCAT(HEX(RAND()), HEX(RAND())) FROM SYSIBM.SYSDUMMY1);SET toSql = 'INSERT INTO QUOTATION.' || tableNameTo || ' (TEMPLATE_PARSER_ID, UUID) VALUES (NEXTVAL FOR QUOTATION.' || seqTo || ',''' || uuid || ''')';PREPARE s FROM toSql;EXECUTE s;END LOOP;CLOSE curs;END;-- Proecss 2BEGIN-- ......END;SET copyResult = 1;
END;

注意点:
1、SQLCODE必须要定义,且必须定义在最外层的BEGIN的下面。
2、必须要判断SQLCODE是否等于100,等于100时退出CURSORLOOP,否则会死循环。
3、“OPEN curs”之后不要忘记“CURSORLOOP:”。

转载于:https://blog.51cto.com/13685327/2146247

DB2 存储过程中执行动态SQL的两种写法相关推荐

  1. 在Oracle中执行动态SQL的几种方法------转载

    在Oracle中执行动态SQL的几种方法 在一般的sql操作中,sql语句基本上都是固定的,如: SELECT t.empno,t.ename  FROM scott.emp t WHERE t.de ...

  2. 存储过程中执行动态Sql语句

    MSSQL为我们提供了两种动态执行SQL语句的命令,分别是EXEC和sp_executesql;通常,sp_executesql则更具有优势,它提供了输入输出接口,而EXEC没有.还有一个最大的好处就 ...

  3. mysql 存储过程 表名_MySql存储过程中执行动态SQL(表名是变量)

    项目中要显示每个表的记录条数,但是因为数据库中的索引表中(infomation_schema.tables)记录的每个表的数据条数不是那么实时(超过3w多就不准了),所以要手动持久化一下再显示,持久化 ...

  4. 怎么在oracle里执行sql语句,在Oracle中执行动态SQL的几种方法

    在一般的sql操作中,sql语句基本上都是固定的,如: SELECT t.empno,t.ename FROM scott.emp t WHERE t.deptno = 20; 但有的时候,从应用的需 ...

  5. oracle中执行动态sql语句吗,oracle中有没有可动态执行sql语句的函数

    oracle中有没有可动态执行sql语句的函数 关注:233  答案:2  手机版 解决时间 2021-03-05 15:53 提问者祗剩寂寞 2021-03-04 22:38 oracle中有没有可 ...

  6. 在存储过程中构建动态SQL

    目录 介绍 sp_executesql与EXECUTE命令 例1.0 例1.1 存储过程中的动态SQL 例2.0 在动态SQL中使用Like操作符,IN操作符和Order By 例3.0 - 使用LI ...

  7. 在.NET中执行Async/Await的两种错误方法

    微信公众号:架构师高级俱乐部 关注可了解更多的编程,架构知识.问题或建议,请公众号留言; 如果你觉得此文对你有帮助,欢迎转发 在.NET中执行异步/等待的两种错误方法 在应用开发中,我们为了提高应用程 ...

  8. oracle 动态执行ddl语句,Oracle过程中执行动态SQL或DDL语句

    如果你用的是 Oracle 8i 及以上的版本,那简单,在过程中用 execute immediate sql_str 就行, sql_str 是一个拼凑的 SQL 语句, 如果你用的是 Oracle ...

  9. spring中AOP动态代理的两种方式

    AOP动态代理的两种方式 Spring AOP动态代理的方式(spring的AOP默认是JDK Proxy) 浅谈这两种动态代理 JDK的动态代理,需要有实现接口 动态代理--JDK Proxy ⚫ ...

最新文章

  1. MySQL + JSON = 王炸!!
  2. linux吃鸡游戏下载,沙雕糖豆人吃鸡战场
  3. Redis简介、与memcached比较、存储方式、应用场景、生产经验教训、安全设置、key的建议、安装和常用数据类型介绍、ServiceStack.Redis使用(1)...
  4. 5-2 决策树算法预测销量高低代码
  5. CocosCreator2.1.0渲染流程与shader
  6. Eclipse 安装配置总结(WST WTP)(转)
  7. ssl1335-最佳派对【二分图,最大匹配,图论】
  8. [渝粤题库]西北工业大学复变函数与积分变换
  9. cropper基本用法
  10. linux xargs命令
  11. 修改远程桌面服务器里的密码
  12. v-ray 5.0 渲染器参数说明
  13. FIT2CLOUD飞致云旗下开源项目DataEase成功进入GitHub趋势榜主榜
  14. origin指数拟合
  15. java类加载器分类_Java类加载器特点的具体介绍
  16. 月圆之夜-体验报告(完稿时间2021/6/11)
  17. 【STM32H7】第4章 ThreadX FileX文件系统移植到STM32H7(SD卡)
  18. 2:Alibaba微服务组件Nacos注册中心
  19. CAS-搭建CAS Server服务端(静态认证)
  20. js实现点击查看大图功能

热门文章

  1. Python eval 与 exec 函数 - Python零基础入门教程
  2. linux划分5t硬盘,关于磁盘分区(以linux系统为例)
  3. form表单图片预览 layui_layui 实现图片上传和预览
  4. oracle undo管理机制,Oracle UNDO数据概念和管理
  5. oracle非常量不能用于privot_Oracle 行列转换函数pivot、unpivot的使用(二)
  6. java double 的精度_Java Double的精度问题
  7. 树展示 移动端_百度移动端开始用网站品牌名代替网址显示
  8. java返回特定下标元素_java基础--输出数组中指定元素的下标
  9. java 随机 数字 字母组合_java生成随机数字和字母组合
  10. 学校门口的树C语言算法,C语言校园导游程序设计汇报.doc