DB2临时表在SQL过程

IBM DB2 SQL 临时表的使用 DECLARE v_cs_getrptdata  cursor with return for v_st;--返回结果集   --临时表   declare global temporary table session.tmp_Srl(     DIM_1 VARCHAR(10),   DIM_2 VARCHAR(10),   DIM_3 VARCHAR(10),   DIM_4 V 阅读详情

 

版权声明:原创作品,如需转载,请与作者联系。否则将追究法律责任。
DB2临时表在SQL过程和SQL语句中的测试总结
 
测试目标
 
分别在SQL过程和SQL语句中创建临时表,并插入数据,看执行结果有什么异同。
 
测试环境
 
DB2 UDB V9.1
 
执行附件里面的SQL语句,得到一个表。
 
 
测试代码和运行结果
 
一、临时表在SQL语句中
 
-- 定义一个全局临时表SESSION.RESULT
DECLARE GLOBAL TEMPORARY TABLE SESSION.RESULT
    ( 
         TMP_HYDM   VARCHAR(10),    -- 行业代码
         TMP_HYMC   VARCHAR(300)   -- 行业名称
    )
     WITH REPLACE
  NOT LOGGED;  
-- 插入数据到临时表   
INSERT INTO  SESSION.RESULT
SELECT MLDM,MLMC FROM DM_HY_CY;
 
-- 查询临时表数据   
SELECT * FROM SESSION.RESULT;
 
测试结果:以上SQL代码正常执行,但是没有查询到任何数据。
 
 
二、临时表在SQL存储过程中
 
CREATE PROCEDURE SP_TEST_TMEP (  )
        DYNAMIC RESULT SETS 1
------------------------------------------------------------------------
-- 语言:DB2 SQL 存储过程
 
-- 说明:用来测试通过查询插入临时表数据
-- 作者:熔 岩
-- 日期:2008-08-31
------------------------------------------------------------------------
P1: BEGIN
        -- 定义一个全局临时表SESSION.RESULT
        DECLARE GLOBAL TEMPORARY TABLE SESSION.RESULT
            ( 
                        TMP_HYDM   VARCHAR(10),   -- 行业代码
                        TMP_HYMC   VARCHAR(300)   -- 行业名称
            )
             WITH REPLACE       -- 如果存在此临时表,则替换                            
                 NOT LOGGED;    -- 不在日志里纪录
 
 
        -- 插入数据到临时表
        INSERT INTO  SESSION.RESULT
        SELECT MLDM,MLMC FROM DM_HY_CY;
 
P2: BEGIN
        -- 游标对客户机应用程序保持打开
        DECLARE CUR_RES CURSOR WITH RETURN FOR
                SELECT * FROM SESSION.RESULT;
        OPEN CUR_RES;
END P2;
END P1
 
测试结果:存储过程执行成功,并返回了插入的目标数据。
 
测试总结
 
1、在SQL语句中,构建临时表是没有意义的,因为当SQL语句执行处于自动提交模式下时,执行后就COMMIT了,而一旦执行了COMMIT语句,临时表将从内存中清除。
 
2、在SQL过程中,临时表定义后,如果没有显式执行到COMMIT语句,则临时表一直存在。并且临时表支持INSERT INTO ... SELECT ... 的语句。
 
3、在DB2下,临时表的模式必须为SESSION,SESSION模式下表是一个内存表,这个SESSION是DB2特有的SCHEMA,SESSION对象的声明周期仅仅限于一次数据连接“会话”,一旦会话结束,SESSION对象就被从内存中清除了,这和JSP中的内置对象SESSION类似。
db2存储过程之动态SQL 最近job调度平台的项目要核对数据,需要编写一个存储过程来获取生产库上相关表的总记录条数, 通过与测试库上的数据条数进行对比来进行大致的核对。由于我之前没写过DB2过程,所以写起来 比较费劲,不过最终还是完成了。 ... 阅读详情

相关推荐

halcon第二讲:焊点提取

本文要完成的任务是将下图中焊点提取出来,对应于halcon例程Blob分析中的ball.hdev。 dev_open_window (0, 0, 512, 512, 'black', WindowHandle) read_image (Image, 'die_03.png') disp_continue_message (WindowHandle, 'black', 'true') sto...

qq_24946843的博客 7154

DB2临时表SQL过程SQL语句中的测试总结

DB2临时表SQL过程SQL语句中的测试总结   测试目标:   分别在SQL过程SQL语句中创建临时表,并插入数据,看执行结果有什么异同。   测试环境:   DB2 UDB V9.1   执行附件里面的SQL语句,得到一个表。     测试代码和运行结果:   一、临时表SQL语句中   -- 定义一个全局临时表SESSION.RESULT DECL...

weixin_34019929的博客 278

由异常的测试眼图引发的深入思考

信号测试中出现“双眼皮”的眼图测试效果,可能的导致因素总结如下:PCB通道阻抗设计不匹配,负载端出现严重反射;发射端采用了不当的信号预处理;接收器均衡处理不当;通道串扰严重... 基于以上的假设,本文就逐一分析下这些因素到底是如何对正常的信号眼图造成影响的。

一只豌豆象的博客 3022

DB2 session临时表

DB2支持session临时表. 该表只能存在于某一session或某一交易上下文中,对其他用户不可见. DB2 V8增加了对临时表的索引的支持, 这对于提升查询速度比较有意义; 下面举例子来说明session临时表的使用: 1. 在创建session临时表前, 您必须创建临时表空间create user temporary tablespace testpagesize 4 k manage...

kumcun的专栏 2624

DB2基础学习2

1、增删改查:select insert delete update merge Insert操作 INSERTINTOUSER(NAME,BIRTHDAY)VALUES('张三','2000-1-1'); INSERTINTOUSER(NAME,BIRTHDAY)VALUES ('张三','2000-1-1'), ('李四','2000-1-...

weixin_30791095的博客 768

DB2 Exists 判断表是否存在 以及 动态执行SQL语句

[code="sql"] IF NOT EXISTS (SELECT * FROM SYSIBM.SYSTABLES WHERE TID 0 AND Name = 'TABLE_NAME' AND Creator = 'DB2INST1') THEN SET v_Sql = 'CREATE TABLE ' || v_Schema || '.' || v_TabName || ' LIK...

Leon1509的专栏 3471

DB2存储过程(纯SQL)实践

最近做一个报表程序,经常要在DB2中查询若干庞大的表的数据并执行一些计算,再返回给WEB端显示。之前的做法是,在java程序里根据条件拼接SQL语句,然后直接用拼接好的SQL语句查询数据库,一句SQL的长度甚至都到几K个字母的长度,加上大量的选择判断条件,可想而知,查询的过程非常缓慢,一般都在30s以上。    据说调用存储过程会比SQL直接查询效率高,为了改善这样低下的查询效率,这几天强迫自

3690

DB2存储过程

如何声明一个存储过程CREATE PROCEDURE 存储过程名(IN 输入变量名 输入变量类型,OUT 输出变量名 输出变量类型)紧跟其后的是存储过程属性列表            常用的有:LANGUAGE SQL、MODIFIES SQL DATA、RESULT SETS 1(返回结果集个数)l         存储过程体以begin开始l         存储过程体以e

aawanghuan的专栏 9512

db2存储过程常用语句

http://http://database.51cto.com/art/201011/232742.htm db2存储过程相信大家都比较了解了,下面就为您介绍一些db2存储过程常用语句,如果您对此方面感兴趣的话,不妨一看。 ----定义         DECLARE CC VARCHAR(4000);     DECLARE SQLSTR VARCHAR(4000)

Jane 1485

DB2查看执行过长的SQL

朋友遇到一个DB2问题,DB2占用了大量的临时表空间,db2pd -d testdb -act发现有大量的SQL长时间运行,为了测试该问题,写了一个简单的处理问题的流程。1.创建测试表 https://www.cndba.cn/hbhe0316/article/4916 CREATE TABLE FUND_DAILY_INCOME ( ...

hbhe0316的专栏 1540

db2 java存储过程,db2存储过程 - 辜圆圆的个人空间 - OSCHINA - 中文开源技术交流社区...

db2还是用dbvis 执行存储过程比较适合 很早就想学存储过程了,之前面试时都是问会不会存储过程,然而我只能摇摇头,看了大量博客,刚好这次可以用存储过程 ,会更方便一些就来搞一搞,其实和其他变成语言差不多来的。首先说一下业务,将临时表的数据迁移到总表中,迁移过后清空临时表,并且返回参数告知应用系统是否完成存储过程。这里只涉及到一小部分的存储过程知识:创建存储过程,并设置参数(传入值、返回值、传入...

weixin_30819757的博客 169

coalesce函数_db2查询函数和存储过程与常用命令

db2查询函数和存储过程--查找某个存储过程select * from syscat.procedures where procschema='PAS' and procname='sp_insert_xtrz'--查找某个函数select * from syscat.functions where funcschema='PAS' and funcname='sp_ins...

weixin_39557813的博客 621

db2数据库存储过程入门3

例5: --在存储过程中声明变量 --在存储过程中建立临时表 create procedure test9(in sid integer , out result integer) language sql begin  declare a integer;  --global是全局的temporary是临时的,session本次会话  --翻译下就是:在本次会话中创建一个全局的临

long95wang的专栏 1242

db2SQL判断物理表是否存在、修改表名

1、db2SQL判断物理表是否存在 SELECT*FROMSYSIBM.SYSTABLESWHERETID<>0ANDName='TABLE_NAME'ANDCreator='DB2INST1' ; 2、修改表名: RENAME TABLE 原表名 TO 修改后表名 ; 转载于:https://www.cnblogs.com/flying...

weixin_30745641的博客 426

DB2数据库常用查询语句

DB2数据库常用查询: 1、DB2查找存储过程语句,存储过程名字大写 SELECT PROCNAME,TEXT,CREATE_TIME,A. * FROM SYSCAT.PROCEDURES a WHERE PROCNAME = ‘TEST_AAA’ with ur; SELECT TEXT, PROCNAME ,a.* from syscat.procedures a where ...

兰海泽的博客 1万+

Session释放时间设置

<br />Session 如果没有手动设置的话,默认的是20分钟释放,但可以根据自己根究需要Session.Timeout=分钟数设置时间,<br />如:Session.Timeout=10  如此就是10分钟以后过期,时间应该是以分钟为单位的。在关闭页面或达到时间时session会自动释放

炉火纯青 1710

Session临时表

开发工具与关键技术:Visual studio 2015、c# 作者:吴晓佩 撰写时间:2019年2月19日 下面我们来制作Session临时表格。 首先我们在页面写好了装临时数据的表格框架,然后在控制器接收页面层传递过来的参数,处理需要储存到临时表格的数据,我这里是根据ID查询相关的数据,然后把数据储存在session里。代码如下。 页面层代码 控制层代码 然后查询session里面的数据,...

weixin_44544716的博客 783

db2数据库临时表操作和存储过程操作

1。java接受DB2数据库存储过程OUT传出来的参数 Session session = getHibernateTemplate().getSessionFactory().openSession();     Transaction tx = session.getTransaction();     tx.begin();     Connection con=session.conn

5177

临时表空间满的解决办法

1 创建中间临时表空间:  create temporary tablespace temp1 tempfile '+DG1/rac/tempfile/temp120130605' size 10M; alter database default temporary tablespace temp1; select username,temporary_tablespace from dba

枫叶的专栏 2859

1991-2024年国家社科基金立项清单和近100份申请书范本-最新出炉.zip

1991-2024年国家社科基金立项清单和近100份申请书范本-最新出炉.zip

上一篇: DB2存储过程开发最佳实践(1)
下一篇: 速掌握DB2数据库创建外键时的选项
silkss
博客等级 码龄17年 1粉丝 6原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值