邵阳网站开发,网站建设与管理做什么,WordPress虚拟资源模板,手机版传奇网站sqlserver中的存储过程#xff0c;何为存储过程呢#xff1f; 存储过程#xff08;Stored Procedure#xff09;是在大型数据库系统中#xff0c;一组为了完成特定功能的SQL 语句集#xff0c;存储在数据库中#xff0c;经过第一次编译后再次调用不需要再次编译#x…sqlserver中的存储过程何为存储过程呢 存储过程Stored Procedure是在大型数据库系统中一组为了完成特定功能的SQL 语句集存储在数据库中经过第一次编译后再次调用不需要再次编译用户通过指定存储过程的名字并给出参数如果该存储过程带有参数来执行它。存储过程是数据库中的一个重要对象。 . 存储过程的优点 ①重复使用。存储过程可以重复使用从而可以减少数据库开发人员的工作量。 ②减少网络流量。存储过程位于服务器上调用的时候只需要传递存储过程的名称以及参数就可以了因此降低了网络传输的数据量。 ③安全性。参数化的存储过程可以防止SQL注入式攻击而且可以将Grant、Deny以及Revoke权限应用于存储过程。 简单讲 1.存储过程只在创造时进行编译以后每次执行存储过程都不需再重新编译而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。 2.当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时)可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。 3.存储过程可以重复使用,可减少数据库开发人员的工作量 4.安全性高,可设定只有某些用户才具有对指定存储过程的使用权 有一点需要注意的是一些网上盛传的所谓的存储过程要比sql语句执行更快的说法实际上是个误解并没有根据包括微软内部的人也不认可这一点所以不能作为正式的优点希望大家能够认识到这一点。 缺点 1调试麻烦但是用 PL/SQL Developer 调试很方便弥补这个缺点。 2移植问题数据库端代码当然是与数据库相关的。但是如果是做工程型项目基本不存在移植问题。 3重新编译问题因为后端代码是运行前编译的如果带有引用关系的对象发生改变时受影响的存储过程、包将需要重新编译不过也可以设置成运行时刻自动编译。 4 如果在一个程序系统中大量的使用存储过程到程序交付使用的时候随着用户需求的增加会导致数据结构的变化接着就是系统的相关问题了最后如果用户想维护该系统可以说是很难很难、而且代价是空前的维护起来更麻烦。 “ 下面就是举例sqlserver中的存储过程的几个案例
--创建一个存储过程,查询全部的员工信息
CREATE PROCEDURE finAll
ASBEGINSELECT * FROM emp
END
EXECUTE finAll--根据员工名称模糊查询员工信息
DROP PROCEDURE findByname
CREATE PROCEDURE findBynamename VARCHAR(50) --传入一个参数姓名
AS
BEGINSELECT * FROM emp WHERE ename like %name%
END--调用存储过程
EXECUTE findByname 张--创建一个带输出参数的存储过程
CREATE PROCEDURE out_empname VARCHAR(50) OUTPUT,age INT OUTPUT,DATE DATE OUTPUT
AS
BEGIN SELECT name ename,age eage,DATE eDATE FROM emp
ENDDECLARE _name VARCHAR(50);
DECLARE _age INT ;
DECLARE _DATE DATE;EXECUTE out_emp _name OUTPUT ,_age OUTPUT ,_DATE OUTPUT;
PRINT _name
PRINT _age
PRINT _DATE --根据名称模糊查询员工信息(使用if)
CREATE PROCEDURE findByNameAsIf_name varchar(50)ASBEGIN IF _name is null or _name BEGINSELECT * FROM emp;ENDELSEBEGINSELECT * FROM emp WHERE ename LIKE %_name%;END
END--调用存储过程
EXECUTE findByNameAsIf 张
EXECUTE findByNameAsIf