oracle存储过程的基本结构包含哪些

oracle存储过程的结构包含三部分:1、过程声明;2、执行过程部分;3、存储过程异常,该部分可省略,如果要增强脚本的容错性和调试的方便性那就写上异常处理。

oracle存储过程的基本结构包含哪些

本教程操作环境:Windows7系统、Oracle 11g版、Dell G3电脑。

什么是存储过程

存储过程: 百度百科上是这样解释的,存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来调用存储过程。

简单的说就是专门干一件事一段sql语句。

可以由数据库自己去调用,也可以由java程序去调用。

oracle数据库中存储过程是procedure。

存储过程结构

(1)基本结构

Oracle存储过程包含三部分:过程声明,执行过程部分,存储过程异常(可写可不写,要增强脚本的容错性和调试的方便性那就写上异常处理)

(2)无参存储过程

/** name_procedure就是自己自定义的存储过程名 */ create or replace procedure name_procedure AS/IS 	变量名1  数据类型; 	变量名2  数据类型; BEGIN 	--要处理的业务逻辑 	EXCEPTION    --存储过程异常 END name_procedure;

(3).有参存储过程

普通参数存储过程

/* age 类型为number 初始化为20; */ CREATE OR REPLACE PROCEDURE name_procedure (param1 TYPE) AS/IS name varchar(20); age number :=20; BEGIN   --业务处理..... END ;

带参数的存储过程并且进行赋值

CREATE OR REPLACE PROCEDURE 存储过程名称(        s_no in varchar,        s_name out varchar,        s_age number) AS total NUMBER := 0; BEGIN   SELECT COUNT(1) INTO total FROM student s WHERE s.age=s_age;   dbms_output.put_line('符合该年龄的学生有'||total||'人');   EXCEPTION     WHEN too_many_rows THEN      DBMS_OUTPUT.PUT_LINE('返回值多于1行');  END

其中参数IN表示输入参数,是参数的默认模式。

  • OUT表示返回值参数,类型可以使用任意Oracle中的合法类型。

  • OUT模式定义的参数只能在过程体内部赋值,表示该参数可以将某个值传递回调用他的过程

  • IN OUT表示该参数可以向该过程中传递值,也可以将某个值传出去

第7行:查询语句,把参数s_age作为过滤条件,INTO关键字,把查到的结果赋给total变量。

第8行:输出查询结果,在数据库中“||”用来连接字符串

第9—11行:做异常处理

存储过程语法

(1)运算符

oracle存储过程的基本结构包含哪些

(2)SELECT INTO STATEMENT语句

  • 将查询结果赋值给一个变量或多个变量

需求:查出成绩为100分的那个学生的姓名,年龄,籍贯

CREATE OR REPLACE PROCEDURE DEMO_CDD1 IS s_name VARCHAR2;   --学生名称 s_age NUMBER;      --学生年龄 s_address VARCHAR2; --学生籍贯 BEGIN   --给单个变量赋值   SELECT student_address INTO s_address   FROM student where student_grade=100;    --给多个变量赋值   SELECT student_name,student_age INTO s_name,s_age   FROM student where student_grade=100;   --输出成绩为100分的那个学生信息   dbms_output.put_line('姓名:'||s_name||',年龄:'||s_age||',籍贯:'||s_address); END

(3)选择语句

//if 后面一定要添加THEN 相当于Java中的 大括号 IF s_sex=1 THEN   dbms_output.put_line('这个学生是男生'); ELSE IF THEN   dbms_output.put_line('这个学生是女生'); ELSE   dbms_output.put_line('这个学生性别错误'); END IF

(4)循环语句

a.基本循环

LOOP   IF 表达式 THEN     EXIT;   END IF END LOOP;

b.while循环

WHILE 表达式 LOOP   dbms_output.put_line('haha'); END LOOP;

c.for循环

//a 1 到 20 范围 FOR a in 10 .. 20 LOOP   dbms_output.put_line('value of a: ' || a); END LOOP;

推荐教程:《Oracle教程

以上就是

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享