存储过程:一个记录集,由一些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)通过存储过程能够使没有权限的用户在控制之下间接的存取数据库,从而确保数据的安全。
存储过程目前用的还不够多,具体请参考下面这篇文章:
存储过程详解
文章来源: 机房重构――存储过程