DB2编程序技巧(三)

   2015-07-03 0
正在看的db2教程是:DB2编程序技巧 (三)。  另一种为
      pcursor1: for loopcs1 as  cousor1  cursor  as
select  market_code  as market_code
           from tb_market_code
           for update
        do
        end for;
       这种方式的优点是比较简单,不用(也不允许)使用open,fetch,close。
  但不能使用with  hold 选项。如果在游标循环内要使用commit,rollback则不能使用这种方式。如果没有commit或rollback的要求,推荐使用这种方式(看来For这种方式有问题)。

修改游标的当前记录的方法
update tb_market_code set market_code='0' where current of cursor1;
不过要注意将cursor1定义为可修改的游标
  declare cursor1 cursor for select market_code from tb_market_code 
for update;

for update 不能和GROUP BY、 DISTINCT、 ORDER BY、 FOR READ ONLY及UNION, EXCEPT, or INTERSECT但 UNION ALL除外)一起使用。



1.5 类似decode的转码操作
oracle中有一个函数  select decode(a1,'1','n1','2','n2','n3') aa1 from
db2没有该函数,但可以用变通的方法
select case a1 
when '1' then 'n1' 
when '2' then 'n2' 
else 'n3'
    end as aa1 from

1.6 类似charindex查找字符在字串中的位置
Locate(‘y','dfdasfay')
查找'y' 在'dfdasfay'中的位置。

1.7 类似datedif计算两个日期的相差天数
days(date(‘2001-06-05')) – days(date(‘2001-04-01'))
days 返回的是从  0001-01-01 开始计算的天数
1.8 写UDF的例子
C写见sqllib\samples\cli\udfsrv.c

1.9 创建含identity值(即自动生成的ID)的表
建这样的表的写法
CREATE TABLE test
     (t1 SMALLINT NOT NULL
        GENERATED ALWAYS AS IDENTITY
        (START WITH 500, INCREMENT BY 1),
      t2 CHAR(1));
在一个表中只允许有一个identity的column.


<

 
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax;问题的解
    com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxE
      哇,时隔两天时间,终于找到这个问题的解决办法,先看问题  这是我最近写的家庭记账本网页版,按顺序输入点击保存,总是弹出添加失败的提示 顺着找原因,把原因锁定在dao层的sql语句上,反复检查,没有找到一点毛病,程序其他地方也没有错误,这让我郁
    02-10
  • ndb的sql语法跟mysql SQL语法不一直的地方
    1,不支持临时表在NDB存储引擎中,不支持临时表;不能创建临时表和改变已经存在的临时表的引擎为NDB;否则报“Table storage engine 'ndbcluster' does notsupport the create option 'TEMPORARY'. ”。2,索引和键的限制(1),创建索引时,列宽不超过3072bytes;(
    02-10
  • 解决JDBC连接MySQL 8时得异常:java.sql.SQLExc
    使用原来基于MySQL 5.1的JDBC代码运行时,报错:java.sql.SQLException: The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTi
    02-10
  • db2,oracle,mysql ,sqlserver限制返回的行数
    不同数据库限制返回的行数的关键字如下:①db2select * from table fetch first 10 rows only; ②oracleselect * from table where rownum=10; ③mysqlselect * from table limit 10; ④sqlServerselect top 10 * from table;
    02-10
  • Logstash-input-jdbc同步mysql数据到ES - sql_last_value
    Logstash-input-jdbc同步mysql数据到ES - sql_
    问题:使用 Logstash-input-jdbc同步mysql到ES, 当中使用了 sql_last_value ,如何重新同步?答: logstash把上一次同步的最后一条记录id写到 c:\用户\{登陆名}\.logstash_jdbc_last_run文件中,只要删除这个文件即可。如下图环境如下:1. windows 102. elas
    02-10
  • Oracle 史上最全近百条Oracle DBA日常维护SQL脚
     史上最全近百条Oracle DBA日常维护SQL脚本指令  http://blog.itpub.net/30126024/viewspace-2057474/ ---具体SQL如下 查询碎片程度高(实际使用率小于30%)的表可以收缩的表条件为什么block100,因为一些很小的表,只有几行数据实际大小很小,但是block
    02-10
  • C#操作SqlServer MySql Oracle通用帮助类Db_Helper_DG(默认支持数据库读写分离、查询结果实体映射ORM)
    C#操作SqlServer MySql Oracle通用帮助类Db_Hel
    【前言】  作为一款成熟的面向对象高级编程语言,C#在ADO.Net的支持上已然是做的很成熟,我们可以方便地调用ADO.Net操作各类关系型数据库,在使用了多年的Sql_Helper_DG后,由于项目需要,于是乎,就准备写一个Mysql_Helper在实现过程中,发现ADO.Net封装之
    02-10
  • ORACLE、MYSQL的JDBC配置 oracle mysql jdbc
    info.jdbc.driverClassName=oracle.jdbc.driver.OracleDriverinfo.jdbc.url=jdbc:oracle:thin:@192.168.182.100:1521:orclinfo.jdbc.username=infoinfo.jdbc.password=xyxxh6hibernate.show_sql=truemoodle.jdbc.driverClassName=com.mysql.jdbc.Drivermoodle
    02-10
  • IDEA 中Spark SQL通过JDBC连接mysql数据库
    一.IDEA装驱动:1.下载一个MySQL的JDBC驱动:mysql-connector-java-5.1.44.tar.gz2.在idea Open Moudle Settings 在 Moudle中   选Dependencies + JDC驱动的解压位置 选(mysql-connector-java-5.1.44-bin)这个就ok二.程序:import java.util.Propertiesim
    02-10
  • java.sql.SQLException: No value specified fo
    public boolean updateMemberslnfo(MembersInfo membersInfo) throws SQLException{StringBuffer sqlBuffer = new StringBuffer("UPDATE membersinfo SET ");boolean check = true;ListObject params = new ArrayListObject();if(membersInfo.getMname()!=nul
    02-10
点击排行