存储过程语法集锦 经典

发布 2021-05-11 08:45:28 阅读 2849

1 create or replace procedure 存储过程名。

2 is3 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_ms**archar2(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(‘打印信息’);

elseraise 异常名(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_ms**archar2(4000);-错误信息变量。

vs_ym_begchar(6);-起始月份。

vs_ym_endchar(6);-终止月份。

vs_ym_sn_begchar(6);-同期起始月份。

vs_ym_sn_endchar(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 :=to_char(add_months(to_date(vs_ym_end,'yyyymm'),12),'yyyymm');

-先删除表中特定条件的数据。

delete from 表名 where ym = is_ym;

--然后用内置的dbms_output对象的put_line方法打印出影响的记录行数,其中用到一个系统变量sql%rowcount

dbms_'del上月记录='|sql%rowcount||'条');

insert into表名(area_code,ym,cmcode,rmb_amt,usd_amt)

select area_code,is_ym,cmcode,sum(rmb_amt)/10000,sum(usd_amt)/10000

from bgd_area_cm_m_base_t

where ym >=vs_ym_beg

and ym <=vs_ym_end

group by area_code,cmcode;

dbms_'ins当月记录='|sql%rowcount||'条');

-遍历游标处理后更新到表。遍历游标有几种方法,用for语句是其中比较直观的一种。

for rec in cur_1 loop

update 表名。

set rmb_amt_sn =

where area_code =

and cmcode =

and ym = is_ym;

end loop;

commit;

-错误处理部分。others表示除了声明外的任意错误。sqlerrm是系统内置变量保存了当前错误的详细信息。

exception

when others then

vs_msg :=error in xxxxxxxxxxx_p('|is_ym||'substr(sqlerrm,1,500);

rollback;

--把当前错误记录进日志表。

insert into log_info(proc_name,error_info,op_date)

values('xxxxxxxxxxx_p',vs_msg,sysdate);

commit;

return;

end;oracle存储过程语法。

1 、判断语句:

if 比较式 then begin end; end if;

create or replace procedure test(x in number) is

begin

if x >0 then

begin

x :=0 - x;

end; end if;

if x = 0 then

begin

x: =1;

end; end if;

end test;

2 、for 循环

for ..in ..loop

- 执行语句

end loop;

1) 循环遍历游标

create or replace procedure test() as

cursor cursor is select name from student; name varchar(20);

begin

for name in cursor loop

begin

dbms_

end; end loop;

end test;

2) 循环遍历数组

create or replace procedure test(vararray in as

-( 输入参数vararray 是自定义的数组类型,定义方式见标题6)

i number;

begin

i :=1; -存储过程数组是起始位置是从1 开始的,与j**a 、c 、c++ 等语言不同。因为在oracle 中本是没有数组的概念的,数组其实就是一张

- 表(table), 每个数组元素就是表中的一个记录,所以遍历数组时就相当于从表中的第一条记录开始遍历

for i in 1.. loop

dbms_ no.'|i ||record in vararray is:'|vararray(i));

end loop;

end test;

3 、while 循环

while 条件语句 loop

begin

end; end loop;

create or replace procedure test(i in number) as

begin

while i < 10 loop

begin

i:= i + 1;

end; end loop;

end test;

4 、数组

首先明确一个概念:oracle 中本是没有数组的概念的,数组其实就是一张表(table), 每个数组元素就是表中的一个记录。

使用数组时,用户可以使用oracle 已经定义好的数组类型,或可根据自己的需要定义数组类型。

1) 使用oracle 自带的数组类型

x array; -使用时需要需要进行初始化

create or replace procedure test(y out array) is

x array;

begin

x :=new array();

y :=x;

end test;

2) 自定义的数组类型 ( 自定义数据类型时,建议通过创建package 的方式实现,以便于管理)

create or replace package mypackage is

public type declarations type info is record( name varchar(20), y number);

SQL存储过程高级基础语法

sql存储过程基本语法 一。注释。单行注释,从这到本行结束为注释sql 语法,类似c c 中 多行注释,类似c c 中 二。变量 int,smallint,tinyint,decimal,float,real,money smallmoneysql 语法,text image,char,varcha...

存储过程格式

过程的命名,一般是目标表名前加p 比如目标表是table 01,则过程名字是p table 01。一个过程可以有若干个插入语句,插入语句之后,不要忘记commit.我们只拿一个的举例子。过程中用到的表都是提前建好的。一般不在过程中建表。表名也可以。作为输入参数,如果表名作为输入参数,则对该表的操作,...

存储过程学习总结

存储过程。一 概述。存储过程 stored procedure 应用在大型数据库系统中,是sql语句和流程控制语句的集合,经编译后存储在数据库系统中,用户通过指定存储过程的名字并给出参数 如果带有参数的话 来执行,类似高级语言中的函数。在创建时编译一次,以后执行时运行很快。存储过程的种类 1系统存储...