一、PL/SQL 语句
PLSQL(Procedure Language/SQL)是Oracle对sql语言的过程化扩展,
指在SQL命令语言中增加了过程处理语句(如分支、循环等),使SQL语言具有过程处理能力。
把SQL语言的数据操纵能力与过程语言的数据处理能力结合起来,
使得PLSQL面向过程但比过程语言简单、高效、灵活和实用
举例用表 t_student;
CREATE TABLE T_STUDENT
( "ID" NUMBER PRIMARY KEY,
"NAME" VARCHAR2(30) NOT NULL,
"SEX" NUMBER(1) CHECK(SEX IN (0,1)),
"EDU" VARCHAR2(30),
"TELE" VARCHAR2(30),
"CARDNO" VARCHAR2(18) UNIQUE CHECK(length(CARDNO) =15 or length(CARDNO) =18),
"CLASSID" NUMBER
);
基本语法:
[declare
--声明变量
--格式 变量 变量类型;
v_name varchar2;
--声明变量并赋值
v_tele varchar2:='13020120';
--声明变量,不明确类型,引用某表,某个字段的类型
--格式 变量名 表名.列名%type;
v_edu t_student.edu%type;
--声明常量 格式 常量名 constant 类型
v_x constant number ;
--记录型引用 格式 变量名 表名%rowtype;
v_student t_student%rowtype;
--声明变量,用于记录用户性别
v_sex varchar2(20);
]
begin
--变量的赋值 变量名:=值;
v_name:='张晓华';
--select into 赋值
--格式 select 列名,列名... into 变量名1,变量名2... from 表名 条件
--select into 只能插入一条记录,否则会报错
select name into v_name from t_student where id = 3;
--记录型引用 数据插入
select * into v_student from t_student where id = 2;
--条件判断
if 条件 then
业务逻辑 ;
else 业务逻辑;
end if;
--条件判断举例
if v_student.sex=0 then
v_sex='女';
else v_sex='男;'
end if;
--条件判断完整格式
if 条件 then
业务逻辑 ;
elsif 条件 then
业务逻辑;
elsif 条件 then
业务逻辑;
end if;
--条件判断完整格式举例
if v_student.sex='0' then
v_sex='女';
elsif v_student.sex='1' then
v_sex='男';
else v_sex='性别未填写';
end if;
--输出语句,输出位置 Output窗口中
--格式 DBMS.OUTPUT.out_line(变量名);
DBMS_OUTPUT.put_line(v_student.name);
[exception
--处理异常
]
end;
--循环语句,分为三种,无条件循环,有条件循环,for循环
--无条件循环 无条件必须有退出语句
loop
业务逻辑;
exit when 条件;退出语句
end loop;
--有条件查询举例
declare
v_num number;
begin
dbms_output.put_line(v_num);
v_num:=v_num+1;
--退出语句
exit when v_num>100;
end;
--有条件循环
while 条件
loop
业务逻辑;
end loop;
--有条件循环举例
declare v_num number;
begin
while v_num<100
loop
dbms_output.put_line(v_num);
v_num:=v_num+1;
end loop;
end;
--for循环
for 变量 in 起始值..终止值
loop
--如果要对循环次数进行调整,需要在loop进行调整,例如 变量为v_num v_num:=v_num+1;
业务逻辑;
end loop;
--for循环举例 for循环 自己定义变量,不需要在 declare中定义变量,且变量自增1
--for循环,如果需要按照指定的增长序列,需要在业务逻辑中进行设置
begin
for v_num in 1..100
loop
dbms_output.put_line(v_num);
end loop;
end;