2024年4月2日发(作者:)
创建:db2
-
td@
-vf createSQLproc
.db2
--end@ (
此处的@可替换成其他符号
)
调用:
db2
call
过程名(参数
)
1 基础
--声明变量:
DECLARE
<
variable-name
>
<
data-type>
<
DEFAULT
constant
>
--赋值:
SET
x=
10;
SET
y=(
SELECT
SUM
(c1)
from
T1);
VALUES
10
INTO
x;
SELECT
SUM
(c1)
INTO
y
from
T1
;
--会话全局变量:
CREATE
VARIABLE
var_name DATATYPE
[DEAFULT
value];
2 、数组
2.1
定义
CREATE
TYPE
mynames
as
VARCHAR(30
)
ARRAY
[];--定义数组
2.2
声明
DECLARE
nameArr mynames;--声明数组
2.3
赋
值
SET
TESTARR=ARRAY[1
,2,
3,4
,5,
6,7
,8,
9,10
];SET
TESTARR
ES
(1),(
2)];--
方法1,使用
SET
语句
SELECT
SUM
(NUM)
INTO
TESTARR[1
]
FROM
(VALUES
(
1),(2
))
M
);--方法
2,使用VALUES INTO
语句
VALUES
1
INTO
TESTARR[1
];--方法
3,使用SELECT INTO
语句
SET
TESTARR[1]
=1;
--方法4,
使用ARRAY
构造函数
2.4
操作数组的函数
ARRAY_DELETE:删除数组元素
TRIM_ARRAY:从右开始删除指定数目
个元素
ARRAY_FIRST:返回数组中第一
个元素
ARRAY_LAST:返回数组中最后一
个元素
ARRAY_NEXT:返回数组下一个元素
ARRAY_PRIOR:返回数组前一个元素
ARRAY_VARIABLE:返回参数指定的元素
ARRAY_EXISTS:判断数组是否有元素
CARDINALITY:返回数组中元素的
个数
MAX_CARDINALITY:返回数组中元素的
个数
UNNEST:将数组转换
为表
3 复合语句
语法:
=ARRAY[VALU
AS
TEMP(NU
label:
BEGIN
[
ATOMIC
|
NOT
ATOMIC]
--ATOMIC
关键字封装的复合语句被当作一
个处理单元
--变量声明、过程逻辑等
END
label
4
流程控制
--条件判断IF
IF
<
condition>
THEN
procedure statement>; ELSEIF > THEN procedure statement>; ELSE procedure statement>; END IF ; IF FRIEND='张三' THEN SET MSG ='你好,张三 '; ELSEIF FRIEND=' 李四' THEN SET MSG ='你好,李四 '; ELSE SET MSG ='对不起,我不认识你 '; END IF ; --循环While WHILE < condition> DO statements>; END WHILE ; WHILE I<= 10 DO SET NUM= NUM+I ; SET I =I+1 ; END WHILE ; --循环for FOR < loop_name> AS < sql statements> DO statements>; END FOR ; FOR TEST AS SELECT I FROM (VALUES(1),(2 DO SET NUM =NUM+ I; END FOR ; --循环LOOP LABEL:LOOP statements >; LEAVE LABEL; ),(3)) AS TEMP(I )


发布评论