初步学习之存储过程基本语法

存储过程,就是带有名字的一个程序块。
是指程序块创建之后,存储在数据库内部,然后我们可以在自己写的程序中通过某种手段调用这段程序。
一般是通过存储过程的名字来调用,就类似使用一个方法或者函数一样。可以设置是否传入参数,和是否有返回值。
调用完后这段程序块就会自动做一些操作,做的操作就是我们定义的存储过程的内容。比如像某张表插入某些数据,或者根据条件修改某条数据。
存储过程的优点:1、存储过程因为SQL语句已经预编绎过了,因此运行的速度比
较快。
2、存储过程运行比较稳定,不会有太多的错误。
3、存储过程可以在单个存储过程中执行一系列 SQL 语句。
4、存储过程可以从自己的存储过程内引用其它存储过程,这可
以简化一系列复杂语句。…等其他优点
(不同的数据库的存储过程,都是用当前自己这个数据库的编程语言来编写的,下面举例oracle中的用法)

1.基本结构

CREATE OR REPLACE PROCEDURE 存储过程名字 
(
参数1 IN NUMBER,
参数2 IN NUMBER
) IS
变量1 INTEGER :=0;
变量2 DATE;
BEGIN
//存储过程内容
END ;

2.if判断

IF L_COUNT <> 0 THEN
XXXX--需要执行的操作代码
END IF;

3.while循环

WHILE V_TEST<10 LOOP
BEGIN
XXXX--需要执行的操作代码
END;
END LOOP;

4.变量赋值

L_TEST := 123;

5.select查询结果存入变量中,可以同时存入多个列到多个变量中,要确保至少查到一条数据,否则会返回一个错误:nodatafound。(可提前做个判断,select count(*) …)

SELECT NO,NAME 
INTO L_NO,L_NAE
FROM T_STUDENT
WHERE ... 

6.可以在存储过程中调用存储过程,与程序中的方法和函数类似,若有参数则考虑确保传入的参数类型、数量、顺序一致,还可以设置返回值。

简单例子:

CREATE OR REPLACE PROCEDURE P_STUDENT
/*CREATE OR REPLACE PROCEDURE是让数据库开始创建存储过程,后面紧接着存储过程的名称,若已经存在,执行后则覆盖原先的存储过程*/
(/*括号里为存储过程需要的参数,可定义为传入,也可定义为传出,还可以同时定义为传入传出类型*/
M_STUDENT_NO IN NUMBER,--(传入)参数1 STUDENT_NO
M_SCORE IN NUMBER, --(传入)参数2 NAME
RES IN OUT VARCHAR2  --(传入传出)参数3 RES <最后一个参数不需要添加符号','>
) AS
--定义存储过程中需要用到的变量
L_COUNT NUMBER;
L_NAME VARCHAR2(50);--类型(值范围)
L_SCORE NUMBER;

BEGIN --开始(BEGIN END中至少有一句语句,可以为NULL)
RES: = '';
--存储过程内容
SELECT COUNT(*) 
INTO L_COUNT 
FROM T_STUDENT STU 
WHERE STU.NO = STUDENT_NO;

IF L_COUNT > 0 THEN --if循环的固定格式
//修改
UPDATE T_STUDENT 
SET SCORE = M_SCORE 
WHERE NO = M_STUDENT_NO;
//查询
SELECT NAME,SCORE
INTO L_NAME,L_SCORE
FROM T_STUDENT STU
WHERE STU.NO = M_STUDENT_NO;
//返回值
RES := '学生:'||L_NAME|| '成绩:'||M_SCORE ; --通过||来连接字符串与变量值

END IF;--if循环的固定格式

END ;--结束
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值