机房重构――存储过程

匿名 (未验证) 提交于 2019-12-03 00:22:01

存储过程:一个记录集,由一些T-SQL语句组成的代码块,T-SQL语句代码块封装成一个方法一样实现某些功能(对单表或多表的增删改查),然后给这个代码块取名,需要的时候调用它。

创建存储过程:
CREATE PROC [EDURE] procedure_name [;number]
[ {@parameter data_type}
[VARYING] [ = default] [OUTPUT]
] [,…n]
[ WITH
{RECOMPILE | ENCRYPTION | RECOMPILE,ENCRYPTION} ]
[FOR REPLICATION]

As sql_statement […n]

调用存储过程
EXECUTE Procedure_name ”――存储过程如果有参数,后面加参数格式为:@参数名=value,也可直接为参数值value

删除存储过程
drop procedure procedure _name


存储过程的参数:
1)procedure_name :存储过程的名称,前面加#为局部临时存储过程,加##为全局临时存储过程;
2)As :指定过程要执行的操作;

以组合查询为例:

USE [charge] GO /****** Object:  StoredProcedure [dbo].[PROC_GroupCheck]    Script Date: 2018/5/31 17:25:34 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author:      <Author,,Name> -- Create date: <Create Date,,> -- Description: <Description,,> -- =============================================  ALTER PROCEDURE [dbo].[PROC_GroupCheck]     @cmbField1 varchar(20),     @cmbField2 varchar(20),     @cmbField3 varchar(20),     @cmbOperator1 varchar(20),     @cmbOperator2 varchar(20),     @cmbOperator3 varchar(20),     @TextBox1 varchar(20),     @TextBox2 varchar(20),     @TextBox3 varchar(20),     @cmbRelations1 varchar(20),     @cmbRelations2 varchar(20),     @tableName varchar(20) AS     declare @TempSql varchar(500) BEGIN     SET @TempSql= 'SELECT * FROM '+@tableName +' WHERE '+@cmbField1+@cmbOperator1+char(39)+@TextBox1+char(39)     if (@cmbRelations1!='')     BEGIN         SET @TempSql=@TempSql+@cmbRelations1+CHAR(32)+@cmbField2 +@cmbOperator2+CHAR(39)+@TextBox2+CHAR(39)         if (@cmbRelations2!='')         BEGIN         SET @TempSql=@TempSql+@cmbRelations2+CHAR(32)+@cmbField3+@cmbOperator3+CHAR(39)+@TextBox3+CHAR(39)         END     END EXECUTE(@TempSql) END

1)数据库执行时,先编译后执行,存储过程是一个编译后的代码块,执行效率比T-SQL语句高。
2)一个存储过程在程序在网络中交互时可以代替大堆的T-SQL语句,可以降低网络通信量,提高通信速率。
3)通过存储过程能够使没有权限的用户在控制之下间接的存取数据库,从而确保数据的安全。

存储过程目前用的还不够多,具体请参考下面这篇文章:
存储过程详解

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!