Oracle 存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行 1: CREATE OR REPLACE PROCEDURE 是一个 SQL 语句通知 Oracle 数据库去创建一个叫做skeleton 存储过程, 假如存在就覆盖它;行 2: IS 关键词表明后面将跟随一个 PL/SQL 体。行 3: BEGIN 关键词表明 PL/SQL 体的开始。行 4: NULL PL/SQL 语句表明什么事都不做,这句不能删去,因为 PL/SQL 体中至少需要有一句;行 5: END 关键词表明 PL/SQL 体的结束存储过程创建语法: create or replace procedure 存储过程名(param1 in type,param2 out type) as 变量 1 类型(值范围); --vs_msg VARCHAR2(4000); 变量 2 类型(值范围);BeginSelect 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; 注意事项:1, 存储过程参数不带取值范围,in 表示传入,out 表示输出类型可以使用任意 Oracle 中的合法类型。2, 变量带取值范围,后面接分号3, 在推断语句前最好先用 count(*)函数推断是否存在该条操作记录4, 用 select 。。。into。。。给变量赋值5, 在代码中抛异常用 raise+异常名 CREATE OR REPLACE PROCEDURE 存储过程名(--定义参数 is_ym IN CHAR(6) ,the_count OUT NUMBER,) AS --定义变量 vs_msg VARCHAR2(4000); --错误信息变量vs_ym_beg CHAR(6); --起始月份vs_ym_end CHAR(6); --终止月份vs_ym_sn_beg CHAR(6); --同期起始月份vs_ym_sn_end CHAR(6); --同期终止月份--定义游标(简单的说就是一个可以遍历的结果集) CURSOR cur_1 IS SELECT 。。。 FROM 。。。 WHERE 。。。 GROUP BY 。。。; BEGIN --用输入参数给变量赋初值,用到了 Oralce 的 SUBSTR TO_CHAR ADD_MONTHS TO_DATE 等很常用的函数。 vs_ym_beg := SUBSTR(is_ym,1,6); vs_ym_end := SUBSTR(is_ym,7,6); vs_ym_sn_beg := TO_CHAR(ADD_MONTHS(TO_DATE(vs_ym_beg,'yyyymm'), -12),'yyyymm'); vs_ym_sn_end...