编写规范

PL/SQL 块是 PL/SQL 的基本程序单元,PL/SQL 块右三个部分构成:定义部分、执行部分、例外处理部分

如下所示:

declare
/* 定义常量、变量、游标、例外、复杂数据结构 */
begin
/* 要执行的PL/SQL语句和sql语句 */
exception
/* 处理运行时的错误 */
end;

调用存储过程

exec \ call

call procedure_name('张三', 18);

简单栗子

CREATE OR REPLACE PROCEDURE "demo_01"
AS
BEGIN
	dbms_output.put_line('hello ');
END;

in 指定输入参数,out 指定输出参数

带参数的存储过程

CREATE OR REPLACE PROCEDURE "demo_01" (val IN VARCHAR, val2 out VARCHAR)
AS
BEGIN
	dbms_output.put_line('hello '||val);
END;

不带参数的存储过程

|| 相当于字符串连接符

CREATE OR REPLACE PROCEDURE "demo_01"
AS
	--定义变量
	id number(10);
	name varchar(20);
    --:=是给变量赋值
BEGIN
	--给变量赋值
	select stu_id, name into id, name from student where stu_id=20200731;
	--打印变量值
	dbms_output.put_line('id:'||id||' name:'||name);
END;

语法

create [or replace] procedure 存储过程名(param1 in type,param2 out type)
    as
    变量1 类型(值范围);
    变量2 类型(值范围);
begin
    select count(*) into 变量1 from 表A where列名=param1;
    if (判断条件) then
        select 列名 into 变量2 from 表A where列名=param1;
        dbms_output.Put_line('打印信息');
   elsif (判断条件) then
       dbms_output.Put_line('打印信息');
   else
       raise 异常名(NO_DATA_FOUND);
   end if;
exception
   when others then
       rollback;
end;

预定义异常

EXCEPTION
	when no_data_found then dbms_output.put_line('没有数据');

判断

CREATE OR REPLACE PROCEDURE "demo_01"
AS
BEGIN
	insert into student(stu_id,name,birthday) values(student_stu_id_seq.nextval,'宝可梦',TO_DATE('1996-7-28', 'YYYY-MM-DD'));
	if SQL%FOUND then
		dbms_output.put_line('新增成功');
	else
		dbms_output.put_line('新增失败');
	end if;
	--delete from student where name='宝可梦';
END;