文档库 最新最全的文档下载
当前位置:文档库 › db2函数详解

db2函数详解

db2函数详解
db2函数详解

DB2 常用函数

1、A VG 返回平均值 (1)

2、COUNT (2)

3、COUNT_BIG (3)

4、MAX (4)

5、MIN (5)

6、SUM (6)

7、ABS 或ABSV AL (7)

8、APPLICATION_ID (8)

9、ASCII (9)

10、BIGINT (10)

11、BLOB (11)

12、CEILING or CEIL (12)

13、CHAR (13)

14、CHARACTER_LENGTH (14)

15、CHR (15)

16、CLOB (16)

17、COALESCE (17)

18、CONCAT (132)

19、DATE (19)

20、DAY (20)

21、DAYOFWEEK (21)

22、DAYOFWEEK_ISO (22)

23、DAYOFYEAR (23)

24、DAYS (24)

25、DBCLOB (25)

26、DECIMAL (26)

27、DECRYPT_BIN and DECRYPT_CHAR (27)

28、DIGITS (28)

29、DOUBLE (29)

30、ENCRYPT (30)

31、EVENT_MON_STATE (31)

32、FLOAT (32)

33、FLOOR (33)

34、GENERATE_UNIQUE (18)

35、GETHINT (16)

36、GRAPHIC (36)

37、HEX (37)

38、HOUR (38)

39、IDENTITY_V AL_LOCAL (39)

40、INSERT (40)

41、INTEGER (41)

43、LCASE (43)

44、LCASE or LOWER (44)

45、LEFT (45)

46、LENGTH (46)

47、LOCATE (47)

48、LONG_V ARCHAR (48)

49、LONG_V ARGRAPHIC (21)

50、LTRIM(SYSFUN模式) (50)

51、LTRIM (51)

52、MICROSECOND (52)

53、MIDNIGHT_SECONDS (53)

54、MINUTE (54)

55、MOD (55)

56、MONTH (56)

57、MULTIPL Y_ALT (57)

58、NULLIF (58)

59、OCTET_LENGTH (59)

60、POSITION (60)

61、POSSTR (61)

62、POWER (62)

63、QUARTER (63)

64、RAND (29)

65、REAL (65)

66、REPEAT (66)

67、REPLACE (67)

68、RIGHT (68)

69、ROUND (69)

70、RTRIM(SYSFUN模式) (70)

71、RTRIM(SYSIBM模式) (71)

72、SECOND (72)

73、SIGN (73)

74、SMALLINT (74)

75、SPACE (75)

76、SQRT (76)

77、STRIP (77)

78、SUBSTR (31)

79、SUBSTRING (79)

80、TIME (80)

81、TIMESTAMP (81)

82、TIMESTAMP_FORMA T (82)

83、TIMESTAMP_ISO (83)

84、TIMESTAMPDIFF (84)

85、TO_CHAR (85)

87、TRIM (87)

88、TRUNCATE or TRUNC (88)

89、UCASE or UPPER (89)

90、V ALUE (90)

91、V ARCHAR (91)

92、V ARCHAR_FORMA T (92)

93、WEEK (34)

94、WEEK_ISO (94)

95、YEAR (95)

1、AVG 返回平均值

语法:

.-ALL------.

>>-AVG--(--+----------+--expression--)-------------------------><

'-DISTINCT-'

说明:

此函数,用于返回所查列的平均值,返回值类型跟原有字段类型相同,如果所求字段为integer类型,则返回平均值的整数部分。

如果所查记录中有空值null,则不计算该条数(如:所查字段有十条记录,其中有一条此字段为null,则只求9个字段的平均值);可以使用distinct,平均值是去掉重复行后求平均值。

例:

SELECT AVG(PRSTAFF)

INTO :AVERAGE

FROM PROJECT

WHERE DEPTNO = 'D11'

SELECT AVG(DISTINCT PRSTAFF)

INTO :ANY_CALC

FROM PROJECT

WHERE DEPTNO = 'D11'

2、COUNT

.-ALL------.

>>-COUNT--(--+-+----------+--expression-+--)-------------------><

| '-DISTINCT-' |

'-*------------------------'

返回结果行数,通常用*,所有行总数

如果指定具体字段,count(字段名),这个字段如果是integer,则为null值的行,不记录行数;

可以使用distinct,则计算去掉重复行后的记录行数,此时,指定的字段类型不能是:LONG VARCHAR, LONG VARGRAPHIC, BLOB, CLOB, DBCLOB, DATALINK, XML, 返回的值,同样不记录有null的行数

如果使用all 参数,则指定的字段值也不记录null行数

例:

SELECT COUNT(*)

INTO :FEMALE

FROM EMPLOYEE

WHERE SEX = 'F'

SELECT COUNT(DISTINCT WORKDEPT)

INTO :FEMALE_IN_DEPT

FROM EMPLOYEE

WHERE SEX = 'F'

3、COUNT_BIG

.-ALL------.

>>-COUNT_BIG--(--+-+----------+--expression-+--)---------------><

| '-DISTINCT-' |

'-*------------------------'

COUNT_BIG 的用法与 COUNT 函数类似。两个函数唯一的差别是它们的返回值。COUNT_BIG 始终返回 bigint 数据类型值。COUNT 始终返回int数据类型值

返回结果行数,通常用*,所有行总数

如果指定具体字段,count(字段名),这个字段如果是integer,则为null值的行,不记录行数;

可以使用distinct,则计算去掉重复行后的记录行数,此时,指定的字段类型不能是:

LONG VARCHAR, LONG VARGRAPHIC, BLOB, CLOB, DBCLOB, DATALINK, XML, 返回的值,同样不记录有null 的行数

如果使用all 参数,则指定的字段值也不记录null行数

4、MAX

.-ALL------.

>>-MAX--(--+----------+--expression--)-------------------------><

'-DISTINCT-'

返回最大值,其所查字段类型要求为内置类型,不能是LONG VARCHAR, LONG VARGRAPHIC, BLOB, CLOB, DBCLOB, DATALINK

例:

SELECT MAX(SALARY) / 12

INTO :MAX_SALARY

FROM EMPLOYEE

5、MIN

.-ALL------.

>>-MIN--(--+----------+--expression--)-------------------------><

'-DISTINCT-'

返回最小值,其所查字段类型要求为内置类型,但不能是LONG VARCHAR, LONG VARGRAPHIC, BLOB, CLOB, DBCLOB, DATALINK

例:

SELECT MAX(COMM) - MIN(COMM)

INTO :COMM_SPREAD

FROM EMPLOYEE

WHERE WORKDEPT = 'D11'

6、SUM

.-ALL------.

>>-SUM--(--+----------+--expression--)-------------------------><

'-DISTINCT-'

求和运算,参数类型要求内置数值类型。

例:

SELECT SUM(BONUS)

INTO :JOB_BONUS

FROM EMPLOYEE

WHERE JOB = 'CLERK'

7、ABS 或ABSVAL

>>-+-ABS----+--(--expression--)--------------------------------><

'-ABSVAL-'

返回绝对值,参数类型要求为内置数值类型

8、APPLICATION_ID

>>-APPLICATION_ID--(--)----------------------------------------><

返回当前应用连接信息,如(172.20.50.68.43274.0903********)

例:

SELECT APPLICATION_ID() AS APPL_ID FROM SYSIBM.SYSDUMMY1

9、ASCII

>>-ASCII--(--expression--)-------------------------------------><

返回字符串最左边的字符的ASCII,如果参数类型为graphic string ,转换成character string进行处理,对于varchar ,最大长度限制为4000byte;clob 最大长度限制为1048576 bytes;long varchar类型先转换成clob处理

返回结果始终为integer

10、CHR

>>-CHR--(--expression--)---------------------------------------><

功能:返回参数指定的ASCII的字符

11、BIGINT

>>-BIGINT--(--+-numeric-expression---+--)----------------------><

+-character-expression-+

'-datetime-expression--'

将参数转换成64 bit integer类型,参数可以是内置数值类型、character、datetime。

numeric-expression

内置数值类型,如果带有小数部分的数字类型(如decimal),则返回值会去掉小数部分。

character-expression

要求由阿拉伯数字组成的字符串,中间不能有空串,才能转换

datetime-expression

DATE返回格式为yyyymmdd

TIME返回格式为hhmmss0

TIMESTAMP返回格式为yyyymmddhhmmss

12、CEILING or CEIL

>>-+-CEILING-+--(--expression--)-------------------------------><

'-CEIL----'

返回大于或等于expression的最小整数,参数要求为内置数值类型

例:

Values(ceiling(213.4)) 返回:214

13、FLOOR

>>-FLOOR--(--expression--)-------------------------------------><

功能:返回小于或等于 expression 的最大整数。

参数:要求为内置数字类型。

例:

values(floor(3.5)) 返回:3

values(floor(-4.5)) 返回:-5

14、CHAR

Character to Character:

>>-CHAR--(--character-expression--+------------+--)------------><

'-,--integer-'

Datetime to Character:

>>-CHAR--(--datetime-expression--+--------------+--)-----------><

'-,--+-ISO---+-'

+-USA---+

+-EUR---+

+-JIS---+

'-LOCAL-'

Integer to Character:

>>-CHAR--(--integer-expression--)------------------------------><

Decimal to Character:

>>-CHAR--(--decimal-expression--+----------------------+--)----><

'-,--decimal-character-'

Floating-point to Character:

>>-CHAR--(--floating-point-expression--------------------------->

>--+----------------------+--)---------------------------------><

'-,--decimal-character-'

有五种不同类型转换成character类型:character、datetime、integer、decimal、floating-point

(参数为CHAR, VARCHAR, 到character转换,如果指定长度,则按固定长度截取字符,不够长,则在右边补空格。

LONG VARCHAR, or CLOB类型)

datetime 到character转换,参数类型可为:date, time, or timestamp可支持时间标准:ISO、USA、EUR、JIS、LOCAL。

integer 到character转换,参数类型可为:SMALLINT, INTEGER, or BIGINT

smallint 返回6位长字符串,integer返回11位长字符串,bigint返回20位长字符串,不够长就在右边补空格。

decimal 到 character转换,转换过程中,如字段字义类似decimal(5,5),则转换过程中,整数部分的0则不转换,位数不够,则在右边补0。

floating-point到character,参数类型可为DOUBLE or REAL,转换成以科学记数法显示字符,并且长度固定为24位(char(24)),不够24位,则在右边补空格

例55,则显示5.5E1

15、CHARACTER_LENGTH

>>-+-CHARACTER_LENGTH-+----------------------------------------->

'-CHAR_LENGTH------'

>--(--expression--+-USING--+-CODEUNITS16-+-+--)----------------><

| +-CODEUNITS32-+ |

| '-OCTETS------' |

'-,--+-CODEUNITS16-+-----'

+-CODEUNITS32-+

'-OCTETS------'

功能:返回指定字符串的长度,要求指定字符串是内置character or graphic string.

注:此函数与length功能类似,区别是length可以求数值类型、时间、和binary 串

16、LENGTH

>>-LENGTH--(--expression--+--------------------+--)------------><

'-,--+-CODEUNITS16-+-'

+-CODEUNITS32-+

'-OCTETS------'

功能:返回指定参数固有或分配的长度;具体字符串长度,跟数据库的编码方式有关,CODEUNITS16, CODEUNITS32, or OCTETS

参数:为内置类型。

下面是不同类型返回长度:

? 2 for small integer

? 4 for large integer

?(p/2)+1 for decimal numbers with precision p

?The length of the string for binary strings

?The length of the string for character strings

? 4 for single-precision floating-point

?8 for double-precision floating-point

? 4 for date

? 3 for time

?10 for timestamp

17、CLOB

>>-CLOB--(--character-string-expression--+------------+--)-----><

'-,--integer-'

将字符串类型转换成CLOB类型,转换过程中,如果指定截取长度,则截取左边指定长度的字符串不够则按实际长度算,如果未指定长度,则都按实际长度算。在Unicode database数据库中,如果为graphic string,则先转换成character string,再执行函数。

18、COALESCE

.---------------.

(1) V |

>>-COALESCE-------(--expression----,--expression-+--)----------><

功能:如果第一个参数为null,则返回第二个参数值,否则返回第一个参数值,要求两个参数类型一至。例:

SELECT DEPTNO, DEPTNAME, COALESCE(MGRNO, 'ABSENT'), ADMRDEPT

FROM DEPARTMENT

19、NULLIF

>>-NULLIF--(--expression--,--expression--)---------------------><

功能:判断两个参数是否相等,如果相等,则返回null,否则返回第一个参数值

参数:要求两参数存在可比性,要求为内置类型数据(除了long string or DATALINK类型数据外)

例:

values(nullif('fff','fff')) 返回:null

values(nullif(1232,4332)) 返回:1232

20、VALUE

>>-VALUE--(--expression----,expression-+--)--------------------><

功能:判断第一个参数是否为null,如果不为null,则返回第一个参数值,如果为null,则返回第二个参数值。

参数:要求两个参数为字符串

注:跟COALESCE函数功能相似。

例:

values(value('dfsf','dbe')) 返回:dfsf

21、BLOB

>>-BLOB--(--string-expression--+------------+--)---------------><

'-,--integer-'

功能:将character string, graphic string, or a binary string类型串转换成blob类型;转换过程中,可以指定要转换的长度,如果未指定,则按实际长度输出。

例:

values(blob('132', 2)) ,结果为13

Graphic to Graphic:

>>-GRAPHIC--(--graphic-expression--+------------+--)-----------><

'-,--integer-'

Character to Graphic:

>>-GRAPHIC--(--character-expression--)-------------------------><

Datetime to Graphic:

>>-GRAPHIC--(--datetime-expression--+--------------+--)--------><

'-,--+-ISO---+-'

+-USA---+

+-EUR---+

+-JIS---+

'-LOCAL-'

功能:将指定参数转换成graphic类型,参数分三种类型

Graphic to Graphic:

graphic-expression参数类型为graphic,integer为指定返回长度,长度不够,则在右边补空格

例:

values(GRAPHIC(GRAPHIC('130xddd'), 2)) ,返回 13

Character to Graphic:

将character、LONG VARCHAR or CLOB 类型数据转换成graphic,LONG VARCHAR or CLOB类型最大长度不能超过16336 bytes,返回长度跟参数长度相同。此转换,不能指定截取长度。

Datetime to Graphic:

将三种时间类型(date、time、timestamp)转换成graphic,注意,此转换只能在Unicode database数据库中进行。三种转换,都有缺省长度

Date:返回长度为10

Time:返回长度为8

Timestamp:返回长度为26

例:

values(graphic(current date)) 返回:2009-04-02

values(graphic(current time)) 返回:17.31.18

values(graphic(current timestamp)) 返回:2009-04-02-17.29.04.584613

23、HEX

>>-HEX--(--expression--)---------------------------------------><

功能:将数字类型数据转换成十六进制表示的字符串

参数:要求内制数字类型

例:

values (hex(536)) 返回:18020000

24、DATE

>>-DATE--(--expression--)--------------------------------------><

参数类型:date、 timestamp、小于或等于3652059的正数、表示法和date与timestamp相同的字符串、七位阿拉伯数字串(此串不能是:CLOB, LONG VARCHAR, DBCLOB, or LONG VARGRAPHIC类型)

例1:参数为date 或timestmp

返回当前日期

values (date(current date))

values (date(current timestamp))

例2:参数为字符串

values (date('2009-01-03')) 返回:2009-1-3

values (date('03.05.2008')) 返回:2008-5-3

例3:参数为七位啊拉佰字符串

values (date('2010060')) 返回:2010-3-1

说明:2010表示年,060表示天数,此处返回日期表示为离2010年1月1日后60天的日期

例4:为整数

values(date(35)) 返回:0001-2-4

表示离公元元年的1月1日后35天的日期

如:

values(date(366)) 返加:0002-1-1

25、HOUR

>>-HOUR--(--expression--)--------------------------------------><

功能:返回时间中小时部分的值,返回类型:large integer

参数:a time, timestamp, time duration, timestamp duration, or a valid character string表示符合a time or timestamp格式,但不能是a CLOB nor a LONG VARCHAR类型;在Unicode database数据库中,支持graphic string,他是先将graphic string转换成character,再执行函数转换的。

例:

values hour('16:35:32') 返回:16

26、DAY

>>-DAY--(--expression--)---------------------------------------><

功能:返回日期部分(不包含年、月和时间)值,返回类型为large integer

参数类型:date、 timestamp、date duration、timestamp duration、表示格式和date与timestamp相同的字符串,但不能是 CLOB 和 LONG VARCHAR类型串,也可以是graphic string(处理是先转换成character,再执行函数)

例:

values (day('2009-1-3'))

返回:3

values (day('2009-3-20 0:00:00'))

返回:20

values day(current timestamp)

返回当前日

27、DAYS

>>-DAYS--(--expression--)--------------------------------------><

功能:返回指定日期离0001-1-1之间的天数,返回类型为整型。

参数类型:date、 timestamp、表示法和date与timestamp相同的字符串(但不能是 CLOB 和 LONG VARCHAR 类型串)、也可以是graphic string(处理是先转换成character,再执行函数)

例:

values days('0001-02-06') 返回:37

例:用于计算两个日期之间相差天数(要取绝对值,否则有负数)

values (days('2009-03-03') - days('2009-01-03')) 返回:59

28、DAYOFWEEK

>>-DAYOFWEEK--(--expression--)---------------------------------><

功能:返回日期在本周的第几天,星期日为1,开始排,星期六为7,返回值类型为integer

参数类型:date、 timestamp、表示法和date与timestamp相同的字符串(但不能是 CLOB 和 LONG VARCHAR 类型串)、也可以是graphic string(处理是先转换成character,再执行函数)

例:values DAYOFWEEK('2009-03-20') 返回6

29、DAYOFWEEK_ISO

>>-DAYOFWEEK_ISO--(--expression--)-----------------------------><

功能:返回日期在本周的第几天,星期一为1,开始排,星期日为7,返回值类型为integer

参数类型:date、 timestamp、表示法和date与timestamp相同的字符串(但不能是 CLOB 和 LONG VARCHAR 类型串)、也可以是graphic string(处理是先转换成character,再执行函数)

例:values DAYOFWEEK('2009-03-20') 返回5

30、DAYOFYEAR

>>-DAYOFYEAR--(--expression--)---------------------------------><

功能:返回指定日期离同一年的1月1日之间的天数,返回值类型为整型,范围1-366

参数类型:date、 timestamp、表示法和date与timestamp相同的字符串(但不能是 CLOB 和 LONG VARCHAR 类型串)、也可以是graphic string(处理是先转换成character,再执行函数)

例:

values DAYOFYEAR('2009-03-03') 返回:62

31、JULIAN_DAY

>>-JULIAN_DAY--(--expression--)--------------------------------><

功能:返回当前和公元前 4712 年 1 月 1 日(儒略日期历法的起始时间)之间间隔的天数,返回为integer。

参数:要求为a date, timestamp类型,或者是符合data、timestamp类型的character string类型,但不能是CLOB 和 a LONG VARCHAR类型串。

例:

values(JULIAN_DAY(current timestamp)-JULIAN_DAY('2009-04-2'))

返回当前日期离2009-04-02之间的天数

32、DBCLOB

>>-DBCLOB--(--graphic-expression--+------------+--)------------><

'-,--integer-'

功能:将graphic 类型转换成dbclob类型,转换过程中,可以指定转换的长度。

参数要求:graphic、character(此类型串先转换成graphic,再转换成dbclob),整数参数,用于需要截取字符长度。

注:要求在Unicode database数据库下才可以用这种转换方法。

33、DECIMAL

Numeric to Decimal:

>>-+-DECIMAL-+--(--numeric-expression--------------------------->

'-DEC-----'

>--+--------------------------------------------+--)-----------><

'-,--precision-integer--+------------------+-'

'-,--scale-integer-'

Character to Decimal:

>>-+-DECIMAL-+--(--character-expression------------------------->

'-DEC-----'

>--+----------------------------------------------------------------------+-->

'-,--precision-integer--+--------------------------------------------+-'

'-,--scale-integer--+----------------------+-'

'-,--decimal-character-'

>--)-----------------------------------------------------------><

Datetime to Decimal:

>>-+-DECIMAL-+--(--datetime-expression-------------------------->

'-DEC-----'

>--+--------------------------------------------+--)-----------><

'-,--precision-integer--+------------------+-'

'-,--scale-integer-'

功能:将数值类型、character、Datetime类型数据转换成decimal类型

Numeric to Decimal

参数说明:要求为数字类型,-precision-integer表示精度,scale-integer表示保留小数位数

注:转换过程中,precision-integer参数一定要大于或等于现有数据的整数位数。

针对不同数字类型,precision-integer有个默认值:

15 for floating-point and decimal

?19 for big integer

?11 for large integer

? 5 for small integer.

Character to Decimal:

参数说明:字符串要求为阿拉佰数字组成的字符串,不能是CLOB和LONG VARCHAR字符类型,字符串中间不能有空格,-precision-integer 表示精度,scale-integer表示保留小数位数;decimal-character表示指定小数点分隔符,此字符不能是阿拉伯数字、“+”、“-”字符

例:

Values (decimal(‘1253’, 5,2) 返回1253

Values (decimal(’12.53’, 5,2) 返回12.53

values( DECIMAL('2140a050', 9, 2, 'a')) 返回:2140.05

Datetime to Decimal:

参数说明:参数要求为时间类型(date、time、timestamp)这几个类型,返回值有缺省精度:

?DATE. The result is a DECIMAL(8,0) value representing the date as yyyymmdd.

?TIME. The result is a DECIMAL(6,0) value representing the time as hhmmss.

?TIMESTAMP. The result is a DECIMAL(20,6) value representing the timestamp as yyyymmddhhmmss.nnnnnn.

注:精度也可以用户自定义,但一定要保证所需的整数位长度。

values( DECIMAL(current date))

34、INTEGER

>>-+-INTEGER-+--(--+-numeric-expression---+--)-----------------><

'-INT-----' +-character-expression-+

+-date-expression------+

'-time-expression------'

功能:将a number, character string, date, or time类型数据转换成integer,在Unicode database 数据库中,如果参数类型为graphic string,则先转换成character,再转换成integer。

参数:要求内置数值类型, character string, date, or time类型;

如果为decimal类型,则返回整数部分值。

字符串型要求符合整型格式,中间不能有空格,参数不能是long tring类型,不能类似decimal类型字符串。

日期类型,则返回成yyyymmdd格式的整型数据。

时间类型,则返加成hhmmss格式的整型数据。

例:

values(integer(4556)) 返回:4556

values(integer(45.56)) 返回:45

values(integer(date('2009-03-04'))) 返回:20090304

35、SMALLINT

>>-SMALLINT--(--+-numeric-expression---+--)--------------------><

'-character-expression-'

功能:将参数转成small integer表示

参数:要求内置数值类型,或者符合small integer格式的character string,在Unicode database数据库中,graphic string类型参数会首先转换成character string,再执行函数转换。

注:被转换的参数,整数部分长度不能超过5位,如果为decimal类型,则只返回整数部分值;字符串之间不能有空格,除首尾空格外,字符串长度不能超过5位。

例:

VALUES (SMALLINT (' 28821 ')) 返回:28821

VALUES (SMALLINT (24552.865545585)) 返回:24552

36、DECRYPT_BIN and DECRYPT_CHAR

>>-+-DECRYPT_BIN--+--------------------------------------------->

'-DECRYPT_CHAR-'

>--(--encrypted-data--+-------------------------------+--)-----><

'-,--password-string-expression-'

功能:解密,用于解析用ENCRYPT函数加密的数据。

参数:encrypted-data需被解密的数据,类型为CHAR FOR BIT DATA or VARCHAR FOR BIT DATA的数据串;password-string-expression为解密时所使用的口令,此口令是用SET ENCRYPTION PASSWORD设置的口令,在解密时,默认使用此命令调置的口令,在插入数据加密时,如不指定密码,则默认使用此命令设置的密码,也可以指定不同的密码,这时想解析这条记录,就需要指定对应的口令。

例:

create table test4

(

id integer,

name varchar(20),

pass varchar(24) for bit data

);

set encryption password='xiao1234';

insert into test4(id,name,pass) values (1,'xiao1',encrypt('sddf-dd-g1'))

可用select id,name,DECRYPT_CHAR(pass) from test4 查到数据

insert into test4(id,name,pass)values (2,'xiao2',encrypt('sddf-dd-g4','xiao321',''))

这时就要指定哪些记录用什么口令,才能够解析出来

select id,name,DECRYPT_CHAR(pass,'xiao321') from test4 where id=2

select id,name,DECRYPT_CHAR(pass,'xiao1234') from test4 where id=1

37、ENCRYPT

>>-ENCRYPT------------------------------------------------------>

>--(--data-string-expression--+--------------------------------------------------------------+--)-><

'-,--password-string-expression--+---------------------------+-'

'-,--hint-string-expression-'

功能:加密指定的数据,加密过程中,可以使用SET ENCRYPTION PASSWORD设置默让密码,也可以在加密过程中,另外指定密码,这样解密时,需要指定对应的密码才能解密对应的数据。

参数说明:

data-string-expression

需要加密的数据,类型要求为a CHAR or a VARCHAR

password-string-expression

指定加密密码,类型要求a CHAR or a VARCHAR,长度要求为6 bytes到127 bytes之间,如果不定指,则默认为SET ENCRYPTION PASSWORD设置的密码。

hint-string-expression

注示,类型要求CHAR or a VARCHAR,最大长度为32bytes

例:

CREATE TABLE EMP (SSN VARCHAR(24) FOR BIT DATA);

SET ENCRYPTION PASSWORD = 'Ben123';

INSERT INTO EMP(SSN) VALUES ENCRYPT('289-46-8832');

INSERT INTO EMP(SSN) VALUES ENCRYPT('289-46-8832','Ben123');

INSERT INTO EMP(SSN) VALUES ENCRYPT('289-46-8832','Pacific','Ocean');

38、GETHINT

>>-GETHINT--(--encrypted-data--)-------------------------------><

功能:此函数用于获得在用ENCRYPT加密数据时的第三个注示参数值

参数:encrypted-data类型为CHAR FOR BIT DATA or VARCHAR FOR BIT DATA

例:

CREATE TABLE XZXTEST.TEST4 (

ID INTEGER,

NAME VARCHAR(20),

PASS VARCHAR(50) FOR BIT DATA

)

insert into test4(id,name,pass)values(1,'xiao1',ENCRYPT('282', 'xiao1234','a1'))

SELECT GETHINT(pass) FROM test4; 返回值:a1

39、DIGITS

>>-DIGITS--(--expression--)------------------------------------><

功能:将SMALLINT, INTEGER, BIGINT or DECIMAL.类型数据转换成字符串,针对不同类型数据,都有一个固定字符串长度,如果不够长,则在左边补0(针对SMALLINT, INTEGER, BIGINT类型转换),decimal类型转换根据指定的精度,整数位不够则在左边补0,小数位不句,则在右边补0,下面是各类型默认长度? 5 if the argument is a small integer

?10 if the argument is a large integer

?19 if the argument is a big integer

?p if the argument is a decimal number with a precision of p.

注:decimal 转换时,会去掉小数点,而直接将整数部分和小数部分连起来形成串。

values(DIGITS(0.55))返回:055

values(DIGITS(1.55)) 返回:155

40、REAL

>>-REAL--(--numeric-expression--)------------------------------><

功能:将数值类型转换成单精度类型表示,为单精度浮点类型。

参数:要求为任何内置数值类型。

单精度浮点数是实数的32 位近似值。数字可以为零,或者在从-3.402E+38 到-1.175E-37 或从 1.175E-37 到 3.402E+38 的范围内。

41、DOUBLE

Numeric to Double:

>>-+-DOUBLE-----------+--(--numeric-expression--)--------------><

+-FLOAT------------+

'-DOUBLE_PRECISION-'

Character String to Double:

>>-DOUBLE--(--string-expression--)-----------------------------><

功能:返回 double类型数据。

参数:内置数字类型或字符串类型,符合数字表示格式的字符串,字符之间不能有空格,字符串不能为空串(‘’),可以为null值

注:在Unicode database数据库中,对到graphic string,转换过程中是先转换成character string,再转换成 double类型。

例:

Values(double('123.3215')) 返回: 123.3215

values(double(7889.546)) 返回: 7889.546

双精度浮点数是实数的64 位近似值。数字可以为零,或者在从-1.79769E+308 到-2.225E-307 或从2.225E-307 到1.79769E+308 的范围内

42、FLOAT

>>-FLOAT--(--numeric-expression--)-----------------------------><

功能:返回floating-point类型数据。

注:与double用法相同,但参数要求为数字类型

43、EVENT_MON_STATE

>>-EVENT_MON_STATE--(--string-expression--)--------------------><

功能:返回event monitor状态。

参数:类型要求CHAR or VARCHAR,值为event monitor 名称;在unicode database数据库中,graphic string 中会先转换成character string后,再执行函数。

返回值为integer (0,1)

0 表示event monitor不处在活动状态

1 表示event monitor 处在活动状态。

例:

SELECT EVMONNAME,

CASE

WHEN EVENT_MON_STATE(EVMONNAME) = 0 THEN 'Inactive'

WHEN EVENT_MON_STATE(EVMONNAME) = 1 THEN 'Active'

END

FROM SYSCAT.EVENTMONITORS

values(EVENT_MON_STATE('DB2DETAILDEADLOCK')) 返回:1

44、GENERATE_UNIQUE

>>-GENERATE_UNIQUE--(--)---------------------------------------><

功能:该函数返回当前系统时间戳,我们可以使用该函数为主键列生成惟一值;返回数据类型为bit data character string 13 bytes long (CHAR(13) FOR BIT DATA)

例:

CREATE TABLE EMPLOYEE ( SERIALNUMBER CHAR(13) FOR BIT

DATA NOT NULL,

FIRSTNAME CHAR(64),

LASTNAME CHAR(64),

SALARY DECIMAL(10, 2),

PRIMARY KEY (SERIALNUMBER))

然后可以用下面的 SQL 语句插入一行:

INSERT INTO EMPLOYEE (SERIALNUMBER, FIRSTNAME, LASTNAME,

SALARY) VALUES(GENERATE_UNIQUE(), ‘John’, ‘Smith’, 999.99)

优点和问题

这里需要清楚两件事情。

首先,当多个事务在同一时刻插入行时,GENERATE_UNIQUE() 可能会返回相同的时间戳。在这种情况下,GENERATE_UNIQUE() 不能为每个事务生成一个惟一的返回值,因而这种方法不适合有大量事务的系统。

第二,一旦系统时钟需要向后调整,那么 GENERATE_UNIQUE() 将可能返回重复的值。

由于上述限制,我决不会在生产系统中使用 GENERATE_UNIQUE()。但是,当您需要在有限的时间内完成一个原型时,这也许是一种选择。

45、IDENTITY_VAL_LOCAL

>>-IDENTITY_VAL_LOCAL--(--)------------------------------------><

功能:返回最近identity column字段分配的值,包含所有表中自增字段。

例:

CREATE TABLE T1

(C1 INTEGER GENERATED ALWAYS AS IDENTITY,

C2 INTEGER)

CREATE TABLE T2

(C1 DECIMAL(15,0) GENERATED BY DEFAULT AS IDENTITY (START WITH 10),

C2 INTEGER)

INSERT INTO T1 (C2) VALUES (5)

values (IDENTITY_VAL_LOCAL()) 此时返回1

INSERT INTO T2 (C2) VALUES (9)

values (IDENTITY_VAL_LOCAL()) 此时返回 10

46、LCASE

>>-LCASE--(--expression--)-------------------------------------><

功能:将 string_exp 中的A-Z字符转换为小写字符。

参数:要求为内置字符串类型,对于VARCHAR,最大长度为4000bytes,对于CLOB类型,最大长度为1048576bytes。在Unicode database数据库中,如果为graphic string,则首先转换成character string,再执行函数。

例:

values(LCASE('ABCDD_D@F#$SDLF')) 返回:abcdd_d@f#$sdlf

47、LCASE or LOWER

>>-+-LCASE-+--(--string-expression--)--------------------------><

'-LOWER-'

功能:将 string_exp 中的A-Z字符转换为小写字符。

参数:要求为内置字符串类型,支持LONG VARCHAR and CLOB类型;在Unicode database数据库中,如果为graphic string,则首先转换成character string,再执行函数。

例:

values(LOWER ('DFDI#UYTR@&HTY')) 返回:dfdi#uytr@&hty

48、UCASE or UPPER

>>-+-UCASE-+--(--expression--)---------------------------------><

'-UPPER-'

功能:将参数中的所有小写字符转换成大写

参数:为字符串类型

例:

values(UPPER ('aaaasfdbb&^5aA')) 返回:AAAASFDBB&^5AA

49、INSERT

>>-INSERT--(--expression1--,--expression2--,-------------------->

>--expression3--,--expression4--)------------------------------><

功能:在指定的字符串expression1中,从expression2开始,删除expression3指定长度的字符串,再插入expression4指定的字符串。

参数:expression1、expression4要求为character string or a binary string type,在Unicode database 数据库中,如果是graphic string,他首先转换成character string再处理;VARCHAR最大长度不能大于

4 000 bytes ,CLOB or a binary string 类型,最大长度不能大于1 048 576 bytes;CHAR类型会先转换成VARCHAR,LONG VARCHAR转换成 CLOB(1M)进行处理;expression1、expression4两个参数类型要一致;expression2为数字类型,指定起始位置;expression3为数字类型,指定长度;expression2、expression3两个参数如果是SMALLINT类型,则会转换成;

例:

VALUES CHAR(INSERT('DINING', 3, 1, 'VID'), 10) 返回:DIVIDING

50、LEFT

>>-LEFT--(--expression1--,--expression2--)---------------------><

功能:返回expression1串中最左边的expression2个字符。

参数:expression1参数要求为character string or a binary string type;在Unicode database数据库中,graphic string首先转换成character,再进行处理;VARCHAR类型,最大长度为4000bytes,CLOB or a binary string最大长度为1048576 bytes,第二个参数为INTEGER or SMALLINT。

例:

values(left ('DFDI#UYTR@&HTY',5)) 返回:DFDI#

51、RIGHT

>>-RIGHT--(--expression1--,--expression2--)--------------------><

功能:在expression1串中,从右边开始取expression2个字节字符,要是取完还不够长,则在所取的字符串右边补空格。

参数:expression1参数要求为character string or a binary string type,在Unicode database数据库中,graphic string串会首先转换成character string,再执行函数,对于VARCHAR,最大长度不能超过4000bytes,对于CLOB or a binary string,最大长度不能超过1048576bytes。第二个参数,要求为INTEGER or SMALLINT。

返回结果类型:

The result of the function is:

?VARCHAR(4000) if the first argument is VARCHAR (not exceeding 4 000 bytes) or CHAR ?CLOB(1M) if the first argument is CLOB or LONG VARCHAR

?BLOB(1M) if the first argument is BLOB.

例:

values(RIGHT ('cxccxd',4)) 返回:ccxd

values(RIGHT ('cxccxd',9)) 返回:'cxccxd '

52、LOCATE

>>-LOCATE--(--search-string--,--source-string--+----------+--+--------------------+--)-><

'-,--start-' '-,--+-CODEUNITS16-+-'

+-CODEUNITS32-+

'-OCTETS------'

功能:在source-string串中,从start位置开始,找出第一次出现search-string的位置,如果没找到,则返回0;如果search-string长度为0,则返回1,如果source-string长度为0,则返回0。

参数:

search-string

要求为内置字符串类型、graphic string data type, or binary string data type with an actual length that is no greater than 4000 bytes,不能为LONG VARCHAR, CLOB, LONG VARGRAPHIC, or DBCLOB类型

DB2 SQLJ 存储过程开发宝典,第 2 部分_217_IT168文库

DB2 SQLJ 存储过程开发宝典,第 2 部分 简介: 在第 1 部分,我们已经介绍了 SQLJ 存储过程的基本知识,如何逐步完成开发和调试。现在,我们将总结说明在运行 SQLJ 存储过程时,经常遇到的错误,并对这些错误产生的原因进行分析,并给出相应的修正方法。此外,在开发过程中,有一些值得考虑或者需要进一步说明的问题,我们也将他们罗列出来,予以探讨。 引言 在第 1 部分,我们已经介绍了 SQLJ 存储过程的基本知识,如何逐步完成开发和调试。现在,我们将总结说明在运行 SQLJ 存储过程时,经常遇到的错误,并对这些错误产生的原因进行分析,并给出相应的修正方法。此外,在开发过程中,有一些值得考虑或者需要进一步说明的问题,我们也将他们罗列出来,予以探讨。 常见错误总结 由于程序代码本身、运行环境、参数配置等原因,SQLJ 存储过程在被调用时,可能会发生各种错误。对这些错误进行分析,明确其产生的原因,找到相应的应对措施,并加以归纳总结,对我们提高开发水平、保证产品质量和提高工作效率等方面具有重要的意义。这些信息对于 SQLJ 应用开发的初学者尤为重要,能够直接的帮助他们解决开发实际工作中遇到的问题,表 1 列出了常见的 SQLJ 存储过程运行错误,原因以及相应措施。 表 1. 常见错误 错误 原因 措施 SQL4306N Java 存储过程或用户定义的函数 名称(特定名称 特定名称)不能调用 Java 方法 方法,特征符为 字符串 DB2 通过 JAR 包名、类名、方法名和签名(Signature )无法找到创建存储过程时指定的被调用的方法。可能是引用的类不存在、jar 包没有安装、方法声明的参数列表与数据库期望的参数列表不匹配或者不是“public”实例方法 1.查看 Java 代码中的方法名和类名,检查存储过程 DDL 中 Java 方法名、类名和 jar 包名是否有误; 2.检查 jar/calss 文件是否在指定位置,如 sqllib/function 目录下; 3.检查存储过程 DDL 中的方法参数列表是否与 Java 代码匹配(使用 javap – s class_id 可以查看类中方法的签名),并且 Java 代码中该方法是 public 的。 SQL4304N Java 存储过程或用户定义的函数 名称(特定名称 特定名称)不能装入 Java 类 类,原因码为 原因码。 1. RC=1:在 CLASSPATH 上找不到该类。往往可能是我们在 DDL 发生了拼写错误; 2. RC=2:该类未实现必需的接口 COM.ibm.db2.app.StoredProc 或缺少 public 访问权标志。如果是 PARAMETER STYLE DB2GENERAL 的存储过程,那么要求被调用 Java 类是 public 的并继承了接口 COM.ibm.db2.app.StoredProc 。 1.检查 Java 代码中的类 / 方法名和存储过程 DDL 中 Java 类 / 方法名是否一致; 2.检查 jar/calss 文件是否在 CLASSPATH 中,如 sqllib/function 目录下; 3.检查是否 DDL 指定了 PARAMETER STYLE DB2GENERAL 而 Java 代码类是否是 public 并继承 接口 COM.ibm.db2.app.StoredProc 。 SQL4302N 过程或用户定义的函数 名称(特定名称 特定名称)由于异常 字符串 而 存储过程由于异常而异常终止。通常可能是查询返回是空的 数据集,或是 SQL 中使用“select into :hostvar”但是实际查 询返回多条数据,或 Java 运行中出现空指针异常等。 检查 db2diag.log 诊断日志,找到错误,修正 Java 代码。

DB2存储过程快速入门.

1.1 SQL过程的结构 命名规则: 1、清洗过程名称命名: PROC_业务主题_目标表(PROC_JY_KJYRLJB 交易主题的卡交易日类聚表) 2、函数名称命名: PROC_业务主题_函数名(PROC_JY_GETYWZL 交易主题取得卡业务种类函数) 3、变量命名: VAR_变量描述(VAR_YWZL 业务种类变量) 4、游标命名: CUR_游标描述(CUR_KJYB 对卡交易表进行游标处理) 语法: CREATE PROCEDURE 过程名称 (参数列表 DYNAMIC RESULT SETS 结果集数量 是否允许SQL LANGUAGE SQL BEGIN SQL 过程体

END 范例“资产负债.sql ”中 第1行:Create Procedure admin.BalanceSheetDayly定义了过程名称 参数列表为Out ProcState varchar(100 其定义SQL 过程从客户应用获取,或返回客户应用的0个或多个参数,参数列表使用逗号侵害各个参数 参数类型有三种: l IN 从客户应用检索值。其不能够在SQL 过程体中修改 l OUT 向客户应用返回值 l INOUT 从客户应用检索值,并返回值 省略了结果集数量的定义,default 为0。即表示不返回结果集。 省略了是否允许SQL 的说明。其值指出了存储过程是否会使用SQL 语句,如果使用,其类型如何: l NO SQL 不能够执行任何SQL 语句 l COTAINS SQL 可以执行不会读取SQL 数据,也不会修改SQL 数据的SQL 语句 l READS SQL DATA 可以包含不会修改SQL 数据的SQL 语句 l MODIFIES SQL DATA 可以执行任何SQL 语句,除了不能够在存储过程中支持的语句以外。

db2数据库使用

一、db2 基础 基本语法 注释:“--”(两个减号) 字符串连接:“||” 如set msg=’aaaa’||’bbbb’,则msg为’aaaabbbb’ 字符串的引用:'’(一定用单引号),如果需要输入单引号,输入两个单引号即可。 语句结束:“;” 语法来源:PASCLE 转义字符: 如果你想查询字符串中包含'%’或'_’ ,就得使用转义字符(Escape Characters)。比如,要想查询book_title中包含字符 串’99%’的纪录: SELECT * FROM books WHERE book_title like '%99!%%’escape '!’ 后面的escape '!’是定一个转义字符'!’, 指明紧跟着转义字符’!'后的%不再是统配符。 DB2命令参数选项 Db2 list command options 可以查看 -a 显示 SQLCA OFF -c 自动落实 ON -e 显示 SQLCODE/SQLSTATE OFF -f 读取输入文件 OFF -l 将命令记录到历史文件中 OFF -n 除去换行字符 OFF -o 显示输出 ON -p 显示交互式输入提示 ON -r 将输出保存到报告文件 OFF -s 在命令出错时停止执行 OFF -t 设置语句终止字符 OFF -v 回送当前命令 OFF -w 显示 FETCH/SELECT 警告信息 ON -x 不打印列标题 OFF -z 将所有输出保存到输出文件 OFF 这些选项的具体功能及其缺省设置为: .a 显示 SQLCA 的数据,缺省为 OFF。 .c 是否自动落实 SQL 命令,缺省为 ON。

db2常用命令+常见问题处理

1.db2常用命令大全 EXPORT TO D:\PRINTXML.IXF OF IXF 近一年来在项目开发中使用到了IBM的DB2 9.1的数据库产品,跟Oracle 相比一些命令有很大的区别,而它最大的功能是支持xml存储、检索机制,通过XPath进行解析操作,使开发人员免于对xml文件在应用进行解析处理,先对其常用命令进行一下汇总,以免遗忘。 注意:在执行如下命令时,需要首先安装db2客户端并通过在运行中输入db2cmd进行初始化 一、基础篇 1、connect to <数据库名> --连接到本地数据库名 db2 connect to <数据库名> user <用户名> using <密码> --连接到远端数据库 2、force application all --强迫所有应用断开数据库连接 3、db2 backupdb db2name<数据库名称> --备份整个数据库数据 db2 restore db --还原数据库 4、list application --查看所有连接(需要连接到具体数据库才能查看) 5、db2start --启动数据库 db2stop --停止数据库 6、create database <数据库名> using codeset utf-8 territory CN --创建数据库使用utf-8编码 7、db2 catalog 命令 catalog tcpip node <接点名称> remote <远程数据库地址> server <端口号> --把远程数据库映射到本地接点一般为50000 db2 catalog db<远程数据库名称> as <接点名称> at node PUB11 --远程数据库名称到本地接点 db2 CONNECT TO <接点名称> user <用户名> using <密码> --连接本地接点访问远程数据库 8、数据库导出 db2look -d <数据库名> -u <用户> -e -o <脚本名称>.sql --导出数据库的表结构,其中用户空间一般为db2admin/db2inst1

DB2_数据库日志管理

1、load 方法装入数据: export to tempfile of del select * from tablename where not 清理条件; load from tempfile of del modified by delprioritychar replace into tablename nonrecoverable; 说明: 在不相关的数据表export数据时,可以采取并发的形式,以提高效率; tablename指待清理table的名称; modified by delprioritychar防止数据库记录中存在换行符,导致数据无法装入的情况; replace into对现数据库中的内容进行替换,即将现行的数据记录清理,替换为数据文件内容; nonrecoverable无日志方式装入; 2、查找当前的应用: db2 list application grep btpdbs; 3、删除当前正在使用的application: db2 "force application (id1,id2,id3)" id1,id2,id3 是list显示的应用号; 4、查看当前应用号的执行状态: db2 get snapshot for application agentid 299 grep row 5、查看数据库参数: db2 get db cfg for //当前数据库可以省略 6、修改数据库的log数据: db2 update db cfg using <参数名> <参数值> 7、db2stop force的用法: 在进行bind的时候出现如下错误: sql0082can error has occurred which has terminated processing. sql0092nno package was created because of previous errors. sql0091nbinding was ended with "3" errors and "0" warnings. 主要是表文件被加锁,不能继续使用; 在进行stop的时候报错:db2stop 8/03/2005 21:46:530 0 sql1025nthe database manager was not stopped because databases are still active.

DB2存储过程使用动态游标的例子

本文将为您介绍一个DB2存储过程使用动态游标的例子,如果您对动态游标的使用感兴趣的话,不妨一看,对您学习DB2的使用会有所帮助。 CREATE PROCEDURE data_wtptest( IN in_taskid_timestamp varchar(30), OUT o_err_no int, OUT o_err_msg varchar(1024)) LANGUAGE SQL P1: BEGIN ATOMIC --声明开始 --临时变量出错变量 DECLARE SQLCODE integer default 0; DECLARE SQLStmt varchar(1024) default ''; DECLARE r_code integer default 0; DECLARE state varchar(1024) default 'AAA';--记录程序当前所作工作 DECLARE at_end int DEFAULT 0; DECLARE t_destnetid int default 0; DECLARE t_recvid varchar(30) default ''; DECLARE SP_Name varchar(50) default 'data_wtptest'; --声明放游标的值 --声明动态游标存储变量 DECLARE stmt1 STATEMENT; DECLARE c1 CURSOR FOR stmt1; --声明出错处理 DECLARE EXIT HANDLER FOR SQLEXCEPTION begin set r_code=SQLCODE; set o_err_no=1; set o_err_msg='处理['||state||']出错,'||'错误代码SQLCODE:['||CHAR(r_code) || '].'; insert into fcc_sp_log(object,name,value) values(SP_Name,in_taskid_timestamp,o_err_msg); end; DECLARE continue HANDLER for not found begin

db2回滚处理问题

db2回滚处理问题 DB2处理器对于存储过程来说,有着不可替代的作用。在DB2中,SQL存储过程可以利用DB2处理器(Condition Handler)来处理存储过程运行过程中的SQL错误(SQLERROR)、SQL警告(SQLWARNING)和没有数据(NOT FOUND)三种常见情况以及你自己定义的触发,你可以使用包括退出(EXIT)、继续(CONTINUE)和撤销(UNDO)在内的三种处理器。 在SQL存储过程运行过程中,如果出现了SQLERROR、SQLWARNING和NOT FOUND 三种情况,SQL存储过程将会自动将执行SQL语句后的SQLCODE和SQLSTATE存储在你事先定义好的变量SQLCODE和SQLSTATE中,并触发你在存储过程中定义的处理器。 在SQL存储过程处理错误,您需要做如下两步:声明SQLCODE和SQLSTATE 变量、定义处理器。在SQL存储过程中,您通过下列语句声明SQLCODE和SQLSTATE 变量: DECLARE SQLCODE INTEGER DEFAULT 0; DECLARE SQLSTATE CHAR(5) DEFAULT ‘00000’; 当存储过程执行时,DB2会自动将该SQL语句的返回码付给这两个变量,你可以在调试程序的时候,将这两个值插入到调试表中,或者利用处理器将这两个值返回给调用者。这样可以方便SQL存储过程的调试。注意:当你在SQL存储过程中存取SQLCODE和SQLSTATE时,DB2会自动将SQLCODE和SQLSTATE置为零。 可以通过下列语句定义DB2处理器: DECLARE handler-type HANDLER FOR condition SQL-procedure-statement 其中handler-type可以是如下几种: CONTINUE:SQL存储过程在执行完处理器中的SQL语句后,继续执行出错SQL 语句后边的SQL语句。 EXIT: SQL存储过程在执行完处理器中的SQL语句后,退出存储过程的执行。 UNDO:这种处理器仅限于原子动作(ATOMIC)复合SQL语句,SQL存储过程将会回滚包含该处理器的复合SQL语句,并在执行完该处理器中的SQL语句后,继续执行原子动作(ATOMIC)复合SQL语句后面的SQL语句。 包括如下三种常见情况: SQLEXCEPTION:在SQL执行过程中返回任何负值。 SQLWARNING:在SQL执行过程中出现警告(SQLWARN0为‘W’),或者是任何不是+100的正的SQL返回值,相应的SQLSTATE以‘01’开始。 NOT FOUND:SQL返回值为+100或者SQLSTATE以‘02’开始。 当然你也可以使用DECLARE语句为特定的SQLSATE定义你自己的。

在db2上建立数据库分区的步骤和命令

本文简单介绍了在DB2上建立数据库分区的步骤和涉及到的命令等,供大家参考! AD:创建database partition 1、创建需要建立数据库分区的db instance 可使用命令建立db instance: db2icrt -s ESE -u db2admin,aaa123456 -h ANWENHAO DBINSTANCENAME 创建完成对应的instance 后需要重启DB2。 2、将新建的db instance加入到DB2中: CATALOG LOCAL NODE DB2INST1 INSTANCE DB2INST1 SYSTEM ANWENHAO OSTYPE NT; 3、在命令行中设置当前需要操作的dbInstance。 set db2instance=db2inst1 db2 get instance

db2 attach to db2inst1 4、创建DBPartition db2start dbpartitionnum 1 ADD DBPARTITIONNUM HOSTNAME ANWENHAO PORT 1 COMPUTER ANWENHAO USER db2admin PASSWORD aaa123456 WITHOUT TABLESPACES 5、创建完成后需要重新启动db2。DB2在此时会增加一个database partition并进行redistribution。 以上操作即完成database partition。 创建database partition group CREATE DATABASE PARTITION GROUP "NODE1" ON DBPARTITIONNUMS (1); COMMENT ON DATABASE PARTITION GROUP "NODE1" IS 'ANWENHAO _1';

DB2存储过程学习总结

Db2 存储过程学习总结 ●在命令窗口执行存储过程,可以方便看出存储过程在哪一行出现错误,方便修改。 ●db2 存储过程常用语句格式 ----定义 DECLARE CC VARCHAR(4000); DECLARE SQLSTR VARCHAR(4000); DECLARE st STATEMENT; DECLARE CUR CURSOR WITH RETURN TO CLIENT FOR CC; ----执行动态SQL不返回 PREPARE st FROM SQLSTR; EXECUTE st; ----执行动态SQL返回 PREPARE CC FROM SQLSTR; OPEN CUR; ----判断是否为空,使用值替代 COALESCE(判断对象,替代值)

----定义临时表 DECLARE GLOBAL TEMPORARY TABLE SESSION.TempResultTable ( Organization int, OrganizationName varchar(100), AnimalTypeName varchar(20), ProcessType int, OperatorName varchar(100), OperateCount int ) WITH REPLACE -- 如果存在此临时表,则替换 NOT LOGGED; DB2 9.x临时表使用总结 1). DB2的临时表需要用命令Declare Temporary Table来创建,并且需要创建在用户临时表空间上; 2). DB2在数据库创建时,缺省并不创建用户临时表空间,如果需要使用临时表,则需要用户在创建临时表之前创建用户临时表空间; 3). 临时表的模式为SESSION,SESSION即基于会话的,且在会话之间是隔离的。当会话结束时,临时表的数据被删除,临时表被隐式卸下。对临时表的定义不会在SYSCAT.TABLES中出现 .; 4). 缺省情况下,在Commit命令执行时,DB2临时表中的所有记录将被删除; 这可以通过创建临时表时指定不同的参数来控制; 5). 运行ROLLBACK命令时,用户临时表将被删除; 下面是DB2临时表定义的一个示例: DECLARE GLOBAL TEMPORARY TABLE results ( RECID VARCHAR(32) , --id XXLY VARCHAR(100), --信息来源 LXDH VARCHAR(32 ), --信息来源联系电话 FKRQ DATE --反馈时间 ) ON COMMIT PRESERVE ROWS WITH REPLACE NOT LOGGED; ----字符串函数

DB2存储过程简单例子

DB2存储过程简单例子 客户在进行短信服务这个业务申请时,需要填写一些基本信息,然后根据这些信息判断这个用户是否已经存在于业务系统中。因为网上服务和业务系统两个项目物理隔离,而且网上数据库保存的客户信息不全,所以判断需要把数据交换到业务系统,在业务系统中判断。 解决方式是通过存储过程,以前也了解过存储过程,但没使用到项目中。不过经过一番努力最后还是完成了,期间遇到了一些困难,特写此文让对DB2存储过程还不熟悉的童鞋避免一些无谓的错误。 DROP PROCEDURE "PLName" @ CREATE PROCEDURE "PLName"(--存储过程名字 IN IN_ID BIGINT , --以下全是输入参数 IN IN_ENTNAME VARCHAR(200) , IN IN_REGNO VARCHAR(50), IN IN_PASSWORD VARCHAR(20), IN IN_LEREP VARCHAR(300), IN IN_CERTYPE CHARACTER(1), IN IN_CERNO VARCHAR(50), IN IN_LINKMAN VARCHAR(50), IN IN_SEX CHARACTER(1), IN IN_MOBTEL VARCHAR(30), IN IN_REQDATE TIMESTAMP, IN IN_REMITEM VARCHAR(300), IN IN_STATE CHARACTER(1), IN IN_TIMESTAMP TIMESTAMP ) BEGIN declare V_RESULT BIGINT; --声明变量 DELETE FROM TableNameA WHERE ID = IN_ID;

db2数据库复制

DB2 与DB2 之间的远程SQL 复制 白玉媛 (baiyy@https://www.wendangku.net/doc/ad14912563.html,), 软件工程师,IBM 中国软件开发中心,IBM 肖振春 (xiaozc@https://www.wendangku.net/doc/ad14912563.html,), 软件工程师, IBM 中国软件开发中心 简介:本文介绍了基于SQL 的DB2 与DB2 之间的远程复制,力求为初学者掌握DB2 复制提供一个参考步骤。 标记本文! 发布日期: 2006 年12 月21 日 级别:中级 访问情况 2363 次浏览 建议: 0 (添加评论) 平均分(共3 个评分) 本文介绍了基于“SQL复制”的DB2 与DB2 之间的远程复制。很多读者反映,对于初学者,由于对DB2 的复制概念不是很清楚,在实践中或多或少遇到了入手难的问题。本文通过对远程DB2 之间的复制的介绍,力求为初学者对DB2 的掌握提供一个参考步骤。 背景 “SQL”复制又称为“DB2 复制”,是为DB2 开发的两种数据复制类型中的一种,它是通过SQL 进行的复制。在这里简单提一下,DB2 复制中的另一种”Q 复制”是通过WebSphere MQ 队列进行的。在进行SQL 复制时,Capture 程序读取DB2 恢复日志以获取对指定源表的更改。该程序将更改保存到分级表中,Apply 程序并行读取更改并应用于目标事务。见图1。 图 1. SQL复制的结构 动机 商业上用复制出于很多原因,可以归纳为: ?分散,把数据分散到各个地方 ?整合,把其他地方的数据联合起来

?交换,与其他地方进行双向的数据交换 ?灵活应用,对上面提到的进行一些改变或者结合 在企业的生产环境中,常常会遇到把分公司的数据汇总到总公司的情况。这些数据可能分别建立在不同的数据库系统之中,也可能只使用DB2 数据库。无论哪种情况,都可以通过IBM 的DB2 ESE 和Webshpere II 产品进行操作。如果产品只是DB2 之间的SQL 复制,那么生产环境中只需安装DB2 ESE 即可。 假设用户有两台服务器都在使用DB2 V8。用户想把其中一台DB2 V8 中的数据复制到另外一台的DB2 系统中。这种情况下,可以选定任意一台服务器中的DB2 作为控制平台,为了方便,本例中直接使用了所要复制到的目标所在的DB2 V8 为控制平台。如图二所示: 图 2. 数据复制目标图 回页首实现的步骤 首先需要确定本地计算机安装了:DB2 ESE(DB2 Enterprise Server Edition)。 本文把复制的过程分为五步介绍,分别为: ?DB2 数据库环境及配置 ?编目(Catalog)DB2 数据库 ?密码配置 ?建立DB2 与DB2 之间的复制过程及错误分析 DB2 数据库环境及配置 在本例中采用了Windows 2000 运行环境,具体配置见表1: 表 1. 操作系统环境与DB2 版本 描述Server A Server B 主机名WSII155 db2repl 主机IP 9.181.139.155 9.181.138.233 操作系统Windows 2000 Server SP4 (Eng) Windows 2000 Server SP4 (Eng)

DB 2 常用命令

DB 2 常用命令 一、加载数据: 1、以默认分隔符加载,默认为“,”号 db2 "import from btpoper.txt of del insert into btpoper" 2、以指定分隔符“|”加载 db2 "import from btpoper.txt of del modified by coldel| insert into btpoper" 二、卸载数据: 1、卸载一个表中全部数据 db2 "export to btpoper.txt of del select * from btpoper" db2 "export to btpoper.txt of del modified by coldel| select * from btpoper" 2、带条件卸载一个表中数据 db2 "export to btpoper.txt of del select * from btpoper where brhid='907020000'" db2 "export to cmmcode.txt of del select * from cmmcode where codtp='01'" db2 "export to cmmcode.txt of del modified by coldel| select * from cmmcode where codtp='01'" 三、查询数据结构及数据: db2 "select * from btpoper" db2 "select * from btpoper where brhid='907020000' and oprid='0001'" db2 "select oprid,oprnm,brhid,passwd from btpoper" 四、删除表中数据: db2 "delete from btpoper" db2 "delete from btpoper where brhid='907020000' or brhid='907010000'" 五、修改表中数据: db2 "update svmmst set prtlines=0 where brhid='907010000' and jobtp='02'" db2 "update svmmst set prtlines=0 where jobtp='02' or jobtp='03'" 六、联接数据库 db2 connect to btpdbs 七、清除数据库联接 db2 connect reset 断开数据库连接 db2 terminate 断开数据库连接 db2 force applications all 断开所有数据库连接 八、备份数据库 1、db2 backup db btpdbs 2、db2move btpdbs export db2look -d btpdbs -e -x [-a] -o crttbl.sql

db2常用命令

1.Load时表挂起状态 set INTEGRITY for "EDWDATA"."F_PR_ALS_CUSTOMER_RELATIVE" IMMEDIATE CHECKED 解锁 2.对指定表列设置自增列 Alter table bir.TB_LOG_PAGE_t alter column logid set not null; Alter table bir.TB_LOG_PAGE_t alter column logid set generated GENERATED ALWAYS AS IDENTITY (START WITH 802144, INCREMENT BY 1, CACHE 20, MINVALUE 1, MAXVALUE 2147483647, NO CYCLE, NO ORDER) 3.ALTER TABLE bir.z88_job_log ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE 4.RUNCATE TABLE tabname IMMEDIATE 5.DB2 LIST DATABASE PARTITION GROUPS SHOW DETAIL 查看数据库分区情况 db2 alter bufferpool CRM_BF_8immediate size 232768automatic 缓冲池调整为自动调整功能。 ALTER BUFFERPOOL SIZE ALTER BUFFERPOOL SIZE BF_32 6.Select bpname,npages from sysibm.sysbufferpools -2为自动调整状态 7.通过将self_tuning_mem 设置为ON 来对数据库启用自调整功能。可以使用UPDATE DATABASE CONFIGURA TION 命令、SQLFUPD API 或通过控制中心中的更改数据库配置参数窗口来将self_tuning_mem 设置为ON 8.?要对由内存配置参数控制的内存区域启用自调整功能,请使用UPDATE DATABASE CONFIGURATION 命令、 SQLFUPD API 或通过控制中心中的更改数据库配置参数窗口将相关配置参数设置为AUTOMA TIC。 ?要对缓冲池启用自调整功能,请将缓冲池大小设置为AUTOMATIC。可以使用ALTER BUFFER POOL 语句(对于现有缓冲池)或CREATE BUFFER POOL 语句(对于新缓冲池)来完成此操作。如果在DPF 环境中将缓冲池大小设置为AUTOMA TIC,就不应该在sysibm.sysbufferpoolnodes 中为该缓冲池定义任何条目。 Update db cfg using self_tuning_mem ON 启用自动调整内存 必须至少有两个内存使用者启用自调整功能才能使自调整功能有效。内存使用者包括SHEAPTHRES_SHR、PCKCACHESZ、BUFFER POOL(每个缓冲池计数为一个)、LOCKLIST 和DATABASE_MEMORY 参数设置 1.-- SORTHEAP是数据库级别参数-- 2.db2 -v update db cfg for DB_NAME using SORTHEAP 4273 3.-- SHEAPTHRES是实例级别参数-- 4.db2 -v update dbm cfg using SHEAPTHRES 0 5. db2 update dbm cfg using SHEAPTHRES_SHR 473258 db2 –v reorgchk update statistics on table all;对所有表做runstats

存储过程编写规范【DB2-SQL】

文档编号:ETL-11-T-2008 DB2 SQL及存储过程编写规范 当前版本:V1.0 版本日期:2009年08月15日

文件信息 修订记录 文件审核/审批 此文件需如下审核 文档分发 此文档将分发至如下个人或机构

1引言 1.1 目的 本标准是针对IBM DB2数据库SQL编写设计而起草的开发规范;同时,也作为各项目ETL组评审ETL任务开发质量的标准之一。 本标准将作为项目规范开发系列之一,并且需要在项目实施工作中不断改进和完善,保障规范能够真正的提高质量和效率。 引言 1.2 总则 整个系统中ETL开发的编码,包括基于封装的程序包中的代码,在对象的命名和使用、程序的注释和排版,都应当注重规范 在编码的过程中,应时刻牢记优化的重要性,对重要程序块或程序包需要注明其逻辑结构。在必要的时候,还应进行代码评审 本规范适用各IBM DB2数据库和项目ETL开发的程序包 应用于系统基于数据库的ETL模块开发并对应用集市相关开发提供参考与指导1.3 预期读者 项目管理人员 软件设计人员 软件编程人员 质量控制人员 软件维护人员

1.4 术语和定义 描述术语 本文档采用以下的术语描述: 规范:编程时强制必须遵守的原则标准:量化的规范。 说明:对此规则或建议进行必要的说明和解释。 示例:对此规则或建议给出适当的例子。 编码术语 编码(Coding) 关键字(Keyword) 函数(Function) 存储过程(Procedure) 变量(Variable) 游标(Cursor) ETL(Extraction、Translation、Loading) 2编码规范 2.1 命名规范 对象命名不能超过30个英文字母,前缀和单词之间用下划线分隔,尽量不采用汉语拼音,使用英文单词或公认单词缩写,单词缩写可通过去掉“元音” 形成。 所有数据库对象(表、视图、存储过程)、关键字和系统函数、数据类型大写;自定义变量、游标小写。 命名的组成只能使用26个英文字母、下划线或阿拉伯数字,不能使用汉字。 名称具有复数意义时,使用名词的正确的复数形式 当一个SQL 语句中涉及到多个表时,始终使用表名别名来限定字段名。这使其他人阅读起来更清楚,避免了含义模糊的引用。 一般情况下,列名称不应包含表名或者表名的任何形式,列名不允许使用统

DB2常用命令小结

1、打开命令行窗口 #db2cmd 2、打开控制中心 # db2cmd db2cc 3、打开命令编辑器 db2cmd db2ce =====操作数据库命令===== 4、启动数据库实例 #db2start 5、停止数据库实例 #db2stop 如果你不能停止数据库由于激活的连接,在运行db2stop前执行db2 force application all 就可以了/db2stop force 6、创建数据库 #db2 create db [dbname] 7、连接到数据库 #db2 connect to [dbname] user [username] using [password]

8、断开数据库连接 #db2 connect reset 9、列出所有数据库 #db2 list db directory 10、列出所有激活的数据库 #db2 list active databases 11、列出所有数据库配置 #db2 get dbcfg 12、删除数据库 #db2 drop database [dbname] (执行此操作要小心) 如果不能删除,断开所有数据库连接或者重启db2 =========操作数据表命令========== 13、列出所有用户表 #db2 list tables 14、列出所有系统表 #db2 list tables for system

15、列出所有表 #db2 list tables for all 16、列出系统表 #db2 list tables for system 17、列出用户表 #db2 list tables for user 18、列出特定用户表 #db2 list tables for schema [user] 19、创建一个与数据库中某个表(t2)结构相同的新表(t1) #db2 create table t1 like t2 20、将一个表t1的数据导入到另一个表t2 #db2 "insert into t1 select * from t2" 21、查询表 #db2 "select * from table name where ..." 22、显示表结构 #db2 describe table tablename 23、修改列

DB2存储过程--基础详解

DB2存储过程-基础详解 2010-12-20 来源:网络 简介 DB2 SQL Procedural Language(SQL PL)是SQL Persistent Stored Module 语言标准的一个子集。该标准结合了SQL 访问数据的方便性和编程语言的流控制。通过SQL PL 当前的语句集合和语言特性,可以用SQL 开发综合的、高级的程序,例如函数、存储过程和触发器。这样便可以将业务逻辑封装到易于维护的数据库对象中,从而提高数据库应用程序的性能。 SQL PL 支持本地和全局变量,包括声明和赋值,还支持条件语句和迭代语句、控制语句的转移、错误管理语句以及返回结果集的方法。这些话题将在本教程中讨论。 变量声明 SQL 过程允许使用本地变量赋予和获取SQL 值,以支持所有SQL 逻辑。在SQL 过程中,在代码中使用本地变量之前要先进行声明。 清单 1 中的图演示了变量声明的语法: 清单 1. 变量声明的语法 .-,-----------------. V | |--DECLARE----SQL-variable-name-+-------------------------------> .-DEFAULT NULL------. >--+-data-type--+-------------------+-+-------------------------| | '-DEFAULT--constant-' | SQL-variable-name 定义本地变量的名称。该名称不能与其他变量或参数名称相同,也不能与列名相同。 图 1 显示了受支持的DB2 数据类型:

DB2 存储过程开发最佳实践

DB2 存储过程开发最佳实践 COALESCE函数会依次检查输入的参数,返回第一个不是NULL的参数,只有当传入COALESCE函数的所有的参数都是NULL的时候,函数才会返回NULL。例如, COALESCE(piName,''),如果变量piName为NULL,那么函数会返回'',否则就会返回piName本身的值。 下面的例子展示了如何对参数进行检查何初始化。 Person表用来存储个人的基本信息,其定义如下: 表1: Person 下面是用于向表Person插入数据的存储过程的参数预处理部分代码:

表Person中num、name和age都是非空字段。对于name字段,多个空格我们也认为是空值,所以在进行判断前我们调用RTRIM和COALESCE对其进行处理,然后使用 piName = '',对其进行非空判断;对于Rank 字段,我们希望如果用户输入的NULL,我们把它设置成"0",对其我们也使用COALESCE进行初始化;对于"Age"和"Num" 我们直接使用 IS NULL进行非空判断就可以了。 如果输入参数没有通过非空判断,我们就对输出参数poGenStatus设置一个确定的值(例子中为 34100)告知调用者:输入参数错误。 下面是对参数初始化规则的一个总结,供大家参考: 1. 输入参数为字符类型,且允许为空的,可以使用COALESCE(inputParameter,'')把NULL转换成''; 2. 输入类型为整型,且允许为空的,可以使用COALESCE(inputParameter,0),把空转换成0; 3. 输入参数为字符类型,且是非空非空格的,可以使用COALESCE(inputParameter,'')把NULL转换成'',然后判断函数返回值是否为''; 4. 输入类型为整型,且是非空的,不需要使用COALESCE函数,直接使用IS NULL进行非空判断。 最佳实践 3:正确设定游标的返回类型 前面我们已经讨论了如何声明存储过程的返回结果集。这里我们讨论一下结果集返回类型的问题。结果集的返回类型有两种:调用者(CALLER) 和客户应用(CLIENT)。首先我们看一下声明这两种游标的例子:

DB2数据库参数详解配置

DB2数据库参数配置 数据库配置发行版级别= 0x0c00 数据库发行版级别= 0x0c00 数据库地域= CN 数据库代码页= 1208 数据库代码集= UTF-8 数据库国家/地区代码= 86 数据库整理顺序= IDENTITY 备用整理顺序(ALT_COLLATE) = 数字兼容性= OFF Varchar2 兼容性= OFF 数据库页大小= 4096 动态SQL查询管理(DYN_QUERY_MGMT) = DISABLE 对此数据库的发现支持(DISCOVER_DB) = ENABLE 限制访问= NO 缺省查询优化类(DFT_QUERYOPT) = 5 并行度(DFT_DEGREE) = 1 在算术异常时继续(DFT_SQLMATHWARN) = NO 缺省刷新有效期(DFT_REFRESH_AGE) = 0 缺省维护的选项(DFT_MTTB_TYPES)的表类型= SYSTEM 保留的高频值的数目(NUM_FREQVALUES) = 10 保留的分位点数目(NUM_QUANTILES) = 20 十进制浮点舍入方式(DECFLT_ROUNDING) = ROUND_HALF_EVEN 备份暂挂= NO

数据库是一致的= NO 前滚暂挂= NO 复原暂挂= NO 启用的多页文件分配= YES 恢复状态的日志保留= NO 日志记录状态的用户出口= NO 自调整内存(SELF_TUNING_MEM) = ON 数据库共享内存大小(4KB)(DATABASE_MEMORY) = AUTOMATIC 数据库内存阈值(DB_MEM_THRESH) = 10 锁定列表的最大存储量(4KB)(LOCKLIST) = AUTOMATIC 每个应用程序的锁定百分比列表(MAXLOCKS) = AUTOMATIC 程序包高速缓存大小(4KB)(PCKCACHESZ) = AUTOMATIC 共享排序的排序堆域值(4KB)(SHEAPTHRES_SHR) = AUTOMATIC 排序列表堆(4KB)(SORTHEAP) = AUTOMATIC 数据库堆(4KB)(DBHEAP) = AUTOMATIC 目录高速缓存大小(4KB)(CATALOGCACHE_SZ) = 260 日志缓冲区大小(4KB)(LOGBUFSZ) = 98 实用程序堆大小(4KB)(UTIL_HEAP_SZ) = 23665 缓冲池大小(页)(BUFFPAGE) = 250 SQL 语句堆(4KB)(STMTHEAP) = AUTOMATIC 缺省应用程序堆(4KB)(APPLHEAPSZ) = AUTOMATIC 应用程序内存大小(4KB)(APPL_MEMORY) = AUTOMATIC 统计信息堆大小(4KB)(STAT_HEAP_SZ) = AUTOMATIC 检查死锁的时间间隔(毫秒)(DLCHKTIME) = 10000 锁定超时(秒)(LOCKTIMEOUT) = -1

相关文档