随笔分类 - AS400
摘要:在这些表表达式的用途当中,有些您可能是熟悉的,而有些可能就不熟悉了。我将分别讨论表表达式每种用途的实例,以展示其强大性。我应邀在全球范围内宣传 SQL 技巧。我相信您将至少学到表表达式的一种用法,而您所学到的东西将对您的应用产生一定的影响,所以还请继续读下去。预过滤全外连接最近几年来,随着工作文件的移除和并行性的加入,全外连接在性能方面已得到了增强。然而,其语法并没有得到像左连接和右...
阅读全文
摘要:设置正确的模糊查询 解答 有些用户在对数据库进行中文的模糊查询的时候,发现查询结果不正确,而对英文的模糊查询完全正确。检查用户的数据库文件,发现其CCSID=836,而用户的作业CCSID=935,这样就存在一个字符集的转换,而不幸的是从836到935的转换是没有的,也不能用CHGPF进行修改。为了实现模糊查询,方法有很多,这里介绍两个:1 利用CPYF将原数据库文件复制一个副本,而...
阅读全文
摘要:1.将光标移动到要进行分屏的列。2.按F21功能键,将会在屏幕上出现一条竖线。3.按F19、F20功能键,就可以将竖线左侧各列锁定,逐个察看右侧各列的数据。
阅读全文
摘要:如何在store procedure中使用动态SQL 解答 所谓动态SQL,是相对静态SQL而言的,静态SQL在编译的时候就已经知道他的全部内容了。而动态SQL脚本在编译的时候还不完整,直到执行过程中才能确定的SQL语句。在DB2/400中实现动态SQL的方式很多,但一般都采用PREPARE的方式来实现,下面是在SQLC中实现动态SQL:EXEC SQL BEGIN DECLARE ...
阅读全文
摘要:我们知道字符字段中可以包含大写字符和小写字符, 如何在SQL模糊查询中忽略对大小写字符的处理?例如: SELECT * FROM TABLENAME WHERE FIELDB LIKE 'A%', 希望得到以'A' 或 'a'开头的所有记录. 解答 使用sort sequence table可以解决此类问题. 以下将解释如何使用'SORT SEQUENCE':*系统值QSRTSEQ默...
阅读全文
摘要:如何在SQL中使用循环结构 解答 FOR,LOOP,WHILE,REPEAT是UDB/400的一种内部循环控制,用于遍历表中符合条件的每一行记录。例如:目的:更新employee库,把所有北京籍员工的工资提高10%例一:使用FOR循环--------------------------------------------CREATE PROCEDURE QGPL/TEST_FORLA...
阅读全文
摘要:如何在SQL/400中计算两日期间的天数? 解答 1. 使用DATE函数, 返回格式为'yyyymmdd'的8位数字: SELECT digits(DATE('02/01/01') - DATE('05/04/99')) FROM ....返回值为:'00010828', 表示其间天数为1年零8个月零28天; 2. 使用DAYS函数, 返回格式为10位的数字: SELECT digi...
阅读全文
摘要:我们在AS/400上观看SQL查询结果,会因为颜色单一,无法观看具有警示形的文字,其实,是可以在SQL查询结果中加入颜色以区分不同类型的结果。 解答 1.颜色属性。为了在SQL查询结果中加入颜色,可以在SQL查询语句中加入颜色的属性。常用的颜色属性有:x'21' 反白 Reversex'22' 高亮度 HIx'23' 高亮度反白 HI reversex'28' 红色 Redx'29'...
阅读全文
摘要:在AS/400的SELECT语句中可以使用CASE表达式,它可根据表达式的内容返回不同的值,它可以简化原来需多条SQL语句实现的查询,以前用多个游标完成的统计可在一条语句中完成,以下举例加以说明。 解答 1.语法规则:Case语句--当对不同条件产生不同的结果值时,可使用Case语句。--Case语句计算所有定义的条件,并按条件是否为真而返回结果。语法如下:CASE []WHEN ...
阅读全文
摘要:如何取出表中前n条记录? 解答 在OS/400 V5R1M0 中,SELECT语句中新增了子句: FETCH FISRT n ROW(S) ONLY, 使用方法如下:1. 从表t1中取符合条件的第一条记录:SELECT * FROM t1 ORDER BY age FETCH FISRT ROW ONLY;2. 从表t1中取符合条件的前n条记录:SELECT * FROM t1 OR...
阅读全文
摘要:如何以批处理方式执行多条SQL语句? 解答 1. 在QGPL/QTXTSRC文件中增加一个成员, 把想要执行的所有语句写入其中; 2. 在命令行执行: RUNSQLSTM SRCFILE(QGPL/QTXTSRC) SRCMBR(XXX). 注意: (1). 成员的类型一定要指定为SQL; (2). 每条语句要以分号(;)结束; (3). 不支持SEL...
阅读全文
摘要:利用sql参照另一个table更新当前table的数据 解答 假设要求更新a表中的a2,a3字段,条件是a1和用b表中的b1相等:create table qgpl/a(a1 char(1),a2 char(1),a3 char(1));create table qgpl/b(b1 char(1),b2 char(1),b3 char(1));insert into qbpl/a v...
阅读全文
摘要:创建SQL存储过程所需要的许可程序 解答 创建SQL存储过程需要以下许可程序来支持, 否则系统会报告SQL7032的错误.1. 操作系统R450及以前版本:5769ST1 -- DB2 UDB Query Manager and SQL Development Kit;5769CX2 -- ILE C;5769SS1-13 -- System Openness Includes;2....
阅读全文
摘要:在V5R2 OS/400的SQL中新增加了一些功能,这里介绍这些新功能之一:自动生成标识列。 解答 具体方法如下:1、在AS/400命令行输入命令STRSQL。2、输入下列命令创建新表:create table xqlib/employee1 ( empno int generated always as identity, name char(20), salary int, bo...
阅读全文
摘要:SQL中的四舍五入功能 解答 在OS/400 R440版本之前,SQL不提供四舍五入函数; 从OS/400 R450版本开始,SQL提供四舍五入函数 -- ROUND。在OS/400 R440版本之前,可以通过函数CASE 和CAST 组合编写四舍五入功能:例如:字段FLD1定义为numeric(5,3)类型,想要四舍五入到小数点后一位,则select子句可以定义成: select ...
阅读全文
摘要:This will delete RRN 1 thru RRN 9,999delete from labelsbk/dds850 a where RRN(a) < 10000
阅读全文
摘要:A R MKCRSPR PFILE(MRKCRSP) * A K SVANSQ ...
阅读全文
摘要:S=select and O=Omit A* A R ORPPL PFILE(SROORPPL) A K OLPRDC ...
阅读全文
摘要:作业需要一个目标之前分配目标,这样在用目标是不用再等,可保证完成所需功能,这叫目标的原县分配。可用ALCOBJ命令预先分配目标,用DLCOBJ解除分配 目标是根据要他们做什么来分配的(读或者修改)和他们是否可以共享。文件和成员总是以*SHRRD来分配。而数据用规定所状态来分配锁的级别。锁状态标志使用的目标已是否可共享。有下列五个锁状态:1. *EXCL(排他) 目标对请求他的作...
阅读全文
摘要:在實際的應用中,我們經常要檢查是否為 潤年 ?一般情況我們都通過數字計算,下面提供一種簡單的方法,跟大家分享... 指令 CVTDAT 已經知道那一年是潤年, 只要將 "0229" 與二位數字年合併成 'mmddyy' 的格式, 當成指令 CVTDAT 的 DATE 參數值, 如果指令CVTDAT 傳回錯誤訊息 "CPF0555 日期錯誤或日期格式錯誤" , 那表示此二位數字年非潤年...
阅读全文