华为官方网站手机商城首页,零基础网页设计培训机构,cms系统介绍,网站设置页面指什么什么是存储过程
存储过程#xff08;Stored Procedure#xff09;是一组为了完成特定功能的SQL语句集合#xff0c;经编译后存储在数据库中#xff0c;用户通过指定存储过程的名字和参数#xff08;如果有#xff09;来执行它。存储过程可以在很多数据库管理系统#x…什么是存储过程
存储过程Stored Procedure是一组为了完成特定功能的SQL语句集合经编译后存储在数据库中用户通过指定存储过程的名字和参数如果有来执行它。存储过程可以在很多数据库管理系统DBMS中找到如SQL Server、Oracle、MySQL等。
存储过程的好处
代码重用存储过程允许你编写一次代码然后在多个地方重复使用。简化操作对于复杂的数据库操作可以将这些操作封装在存储过程中用户只需调用存储过程即可。提高性能存储过程在首次执行时会进行编译和优化后续的调用会重用这些编译后的代码从而提高性能。安全性通过存储过程你可以限制对基础表的直接访问只允许通过预定义的、受控的接口进行访问。集中管理所有的数据库操作逻辑都存储在数据库中使得管理和维护更加容易
使用存储过程需要注意的是
1. declare语句只能放在存储过程的开始位置放在后面就会报错 2. if 语句的后面必须有then但是不需要begin在if结束时需要end if 3. 判断是否为NULL倒是和MSSQL一样都有IS NULL 4. delimiter是定界符的意思在结束的end后面要添加定界符 5. end if之后必须跟分号否则语法错误 6. while后面跟条件条件后面要跟一个do在while循环体结束之后需要end while并以分号结束。 7. in 表入参(默认) , out 表出参 , inout 表出入参 8. 两种赋值方式: set ,select into SELECT id,data INTO x,y FROM test.t1 LIMIT 1; SET a 0;
具体案例
1. 基本案例
-- 代码 DELIMITER $$ CREATE PROCEDURE test1(IN ss VARCHAR(100)) BEGIN SELECT ss ; END $$ -- 调用 SET s1 你好 ; CALL test1(s1) ; --
2. 带出参案例
-- 代码
DELIMITER $$
CREATE PROCEDURE testproce(IN score INT,OUT rs VARCHAR(200))
BEGINDECLARE sc INT;SET sc score ;IF sc 0 OR sc 100 THENSET rs score error;ELSEIF sc 80 THENSET rs A;ELSEIF sc 60 THENSET rs B;ELSESET rs C;END IF ;
END $$
-- 调用 SET a1 60; SET a2 ; CALL testproce(a1,a2); SELECT a2 ; --
3.while的简单应用
-- 代码
DELIMITER $$
CREATE PROCEDURE proc_add_looply(IN $className VARCHAR(200),INOUT $insertTimes INT)
BEGINWHILE $insertTimes0 DOINSERT INTO classes VALUES(DEFAULT,$className);SET $insertTimes $insertTimes - 1 ;END WHILE;COMMIT;
END $$
-- 调用 SET lp_1 班 ; SET lp_2 5 ; CALL proc_add_looply(lp_1,lp_2);
--
4.用数据库中的数据赋值
-- 代码
DELIMITER $$
CREATE PROCEDURE show_job_dept(IN no2 INT,OUT job2 VARCHAR(100),OUT dno2 INT)
BEGINSELECT job,deptno INTO job2,dno2 FROM emp WHERE EMPNO no2;
END $$
-- 调用 SET sjd_1 7369; SET sjd_2 ; SET sjd_3 0; CALL show_job_dept(sjd_1,sjd_2,sjd_3); SELECT sjd_2 ; SELECT sjd_3 ; --