提交 87e872fc 编写于 作者: 白日与明月's avatar 白日与明月

上传新文件

上级 fea5f372
# SPL基础
## 概述
- SPL例程由开始语句、语句块、结束语句组成
- SPL例程根据是否返回值,分为存储过程和函数
- 语句块由SQL和SPL语句组成。
## 基本语法:
```sql
-- 存储过程
create procedure proc_name (param1 data_type1,param2 data_type2..)
sql_code;
end procedure;
-- 函数
create function func_name (param1 data_type1,...)
returning data_type1 [as id1],data_type2 [as id2]...
sql_code;
end function;
```
语法:
- 变量声明
- 变量赋值
- 条件
- 循环
- goto
- loop
- for/foreach
- while
- 异常处理
示例:
```sql
--变量声明
-- 变量声明
create procedure test1()
define m,n int;
define global i int default 1;
define global loginname varchar(20) default 'admin';
end procedure;
create procedure test2()
define global i int default 0;
define global username varchar(20) default '';
insert into t_user values (i,username);
let i=i+1;
let username=concat("syn_",to_char(i));
end procedure;
-- 变量赋值
create procedure test3()
define userid int;
define sex varchar(20);
let userid,username=1,"m";
insert into t_user values (userid,sex);
-- let var=value;
-- let var1,var2=value1,value2;
-- let var1,var2...=function(args1,args2....);
-- let var1,var2...=(select col1,col2...from tb);
-- case
-- case expr
-- when val_1 then
-- code1;
-- when val_2 then
-- code2;
-- else
-- code3;
-- end case;
create function test_func_1(sexcode int)
returning varchar(10) as sex
define sex varchar(10);
case sexcode
when 1 then
let sex='男';
when 2 then
let sex='女';
else
let sex='未知';
end case;
return sex ;
end function;
-- 循环
-- goto
-- << lbl_goto >>
-- spl_code;
-- if expr then
-- goto lbl_goto;
-- end if;
-- loop
-- loop
-- if expr then
-- exit;
-- end if;
-- end loop;
-- for/foreach
-- for i in (start to end ) loop
-- spl_code;
-- end loop;
-- for i in (start to end )
-- spl_code
-- end for;
-- foreach select col1,col2,... into var1,var2...from table
-- spl_code;
-- end foreach
-- while
-- while expr loop
-- spl_code;
-- end loop;
-- while expr
-- spl_code;
-- end while;
create procedure test4()
define i int;
let i=1;
while i<10
insert into table t_user values (i,concat("u_",to_char(i)))
let i = i+1
end while;
end procedure;
create table t_class(
class_id int,
class_name varchar(20)
);
create table t_student(
sid int,
username varchar(100),
age int,
sex varchar(5),
class_id int
);
```
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册