数据库过程的创建及使用 以及使用过程的优缺点
-
过程的操作命令
- 列出过程的详细列表;-
- show procedure status;
- 删除过程
- drop procedure 组要删除的过程的名字;
- 展示过程的详细内容
- show create procedure 需要展示的过程名字;
- 调用过程
- CALL 过程名()
-
过程固定格式
create procedure 过程名(参数) begin 过程体; end[如果报错可以在end后面加上//,这是一个点] 参数:参数输入输出类型【IN,OUT,INOUT】,参数名称,参数类型【int,varcha···】
- 实例不带参
CREATE PROCEDURE oneprocedure() BEGIN SELECT * FROM table; END
调用CALL PROCEDURE oneprocedure();
- 实例带参1
CREATE PROCEDURE SP_SEARCH (IN p_name CHAR(20)) BEGIN IF p_name IS NULL OR p_name = '' THEN SELECT id INTO outid FROM table1; ELSE SELECT id INTO outid FROM table2 WHERE USER_NAME LIKE p_name; END IF; END
调用 CALL PROCEDURE SP_SEARCH(‘TESR’)
- 实例参数2【带输出参数】
CREATE PROCEDURE SP_SEARCH5 (IN intId INT,OUT outCONUR VARCHAR(100)) BEGIN SELECT title INTO outCONUR FROM table WHERE id =intId; END
调用 CALL SP_SEARCH5(5,@outid);
SELECT @outid;
使用过程的优缺点
- 优点
1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般 SQL 语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
2.当对数据库进行复杂操作时(如对多个表进行 Update,Insert,Query,Delete 时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。这些操作,如果用程序来完成,就变成了一条条的 SQL 语句,可能要多次连接数据库。而换成存储,只需要连接一次数据库就可以了。
3.存储过程可以重复使用,可减少数据库开发人员的工作量。
4.安全性高,可设定只有某此用户才具有对指定存储过程的使用权。 - 缺点:
1.如果更改范围大到需要对输入存储过程的参数进行更改,或者要更改由其返回的数据,则您仍需要更新程序集中的代码以添加参数、更新 GetValue() 调用,等等,这时候估计比较繁琐了。
2.可移植性差
由于存储过程将应用程序绑定到 SQL Server,因此使用存储过程封装业务逻辑将限制应用程序的可移植性。如果应用程序的可移植性在您的环境中非常重要,则将业务逻辑封装在不特定于 RDBMS 的中间层中可能是一个更佳的选择