例9:
--在存储过程中for循环进行遍历分所有直接子分类
--简单的测试下for循环
create procedure test15(in sid integer,out result varchar(2000))
language sql
begin
set result = '';
--使用for循环查询dtdoctype中的数字,拼接到结果集中
for xunhuan as--xunhuan是循环的名称
--as后面跟游标名或sql语句,不带分号
select id,parentid,name from dtdoctype where parentid = sid
do
--条件,可以是sql表达式呀
set result = name;
END FOR;
end;
-------------------------------------------------------
--用于测试表dtdoctype
create table test_dtdoctype(
id integer,
parentid integer,
name varchar(500)
);
drop procedure test16;
--在存储过程中for循环进行遍历分所有直接子分类
create procedure test16(in sid integer,out result varchar(2000))
language sql
begin
set result = '';
--使用for循环查询dtdoctype中的数字,拼接到结果集中
for xunhuan as
select id,parentid,name from dtdoctype where parentid = sid
do
set result = concat(result,strip(DIGITS(id)));
set result = concat(result,strip(DIGITS(parentid)));
set result = concat(result,name);
set result = concat(result,';');
--将查出来的数据,存入到实体表test_dtdoctype中
insert into test_dtdoctype(id,parentid,name)values(id,parentid,name);
END FOR;
end;