SQL Server存储过程的基本概念以及语法汇总

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SQL Server存储过程的基本概念以及语法【转】

存储过程的概念

SQL Server提供了一种方法,它可以将一些固定的操作集中起来由SQL Server 数据库服务器来完成,以实现某个任务,这种方法就是存储过程。

存储过程是SQL语句和可选控制流语句的预编译集合,存储在数据库中,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其他强大的编程功能。

在SQL Server中存储过程分为两类:即系统提供的存储过程和用户自定义的存储过程。

可以出于任何使用SQL语句的目的来使用存储过程,它具有以下优点:

可以在单个存储过程中执行一系列SQL语句。

可以从自己的存储过程内引用其他存储过程,这可以简化一系列复杂语句。

存储过程在创建时即在服务器上进行编译,所以执行起来比单个SQL语句快,而且减少网络通信的负担。

安全性更高。

创建存储过程

在SQL Server中,可以使用三种方法创建存储过程:

①使用创建存储过程向导创建存储过程。

②利用SQL Server 企业管理器创建存储过程。

③使用Transact-SQL语句中的CREATE PROCEDURE命令创建存储过程。

下面介绍使用Transact-SQL语句中的CREATE PROCEDURE命令创建存储过程

创建存储过程前,应该考虑下列几个事项:

①不能将 CREATE PROCEDURE 语句与其它SQL语句组合到单个批处理中。

②存储过程可以嵌套使用,嵌套的最大深度不能超过32层。

③创建存储过程的权限默认属于数据库所有者,该所有者可将此权限授予其他用户。

④存储过程是数据库对象,其名称必须遵守标识符规则。

⑤只能在当前数据库中创建存储过程。

⑥一个存储过程的最大尺寸为128M。

使用CREATE PROCEDURE创建存储过程的语法形式如下:

QUOTE:

CREATE PROC[EDURE]procedure_name[;number][;number]

[{@parameter data_type}[VARYING][=default][OUTPUT]][,...n]

WITH

{RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION}]

[FOR REPLICATION]

AS sql_statement [ ...n ]

用CREATE PROCEDURE创建存储过程的语法参数的意义如下:

procedure_name:用于指定要创建的存储过程的名称。

number:该参数是可选的整数,它用来对同名的存储过程分组,以便用一条 DROP PROCEDURE 语句即可将同组的过程一起除去。

@parameter:过程中的参数。在 CREATE PROCEDURE 语句中可以声明一个或多个参数。

data_type:用于指定参数的数据类型。

VARYING:用于指定作为输出OUTPUT参数支持的结果集。

Default:用于指定参数的默认值。

OUTPUT:表明该参数是一个返回参数。

例如:下面创建一个简单的存储过程productinfo,用于检索产品信息。

USE Northwind

if exists(select name from sysobjects

where name='productinfo' and type = 'p'

drop procedure productinfo

GO

create procedure productinfo

as

select * from products

GO

通过下述sql语句执行该存储过程:execute productinfo

即可检索到产品信息。

执行存储过程

直接执行存储过程可以使用EXECUTE命令来执行,其语法形式如下:

[[EXEC[UTE]]

{ [@return_status=]

{procedure_name[;number]|@procedure_name_var} [[@parameter=]{v

alue|@variable[OUTPUT]|[DEFAULT]}

[,...n]

[ WITH RECOMPILE ]

使用 EXECUTE 命令传递单个参数,它执行 showind 存储过程,以 titles 为参数值。showind 存储过程需要参数 (@tabname,它是一个表的名称。其程序清单如下:

EXEC showind titles

当然,在执行过程中变量可以显式命名:

EXEC showind @tabname = titles

如果这是 isql 脚本或批处理中第一个语句,则 EXEC 语句可以省略:

showind titles或者showind @tabname = titles

下面的例子使用了默认参数

USE Northwind

GO

CREATE PROCEDURE insert_Products_1

( @SupplierID_2 int,

@CategoryID_3 int,

@ProductName_1 nvarchar(40='无'

AS INSERT INTO Products

(ProductName,SupplierID,CategoryID

VALUES

(@ProductName_1,@SupplierID_2,@CategoryID_3

GO

exec insert_Products_1 1,1

Select * from Products where SupplierID=1 and CategoryID=1 GO

下面的例子使用了返回参数

USE Northwind

GO

CREATE PROCEDURE query_products

( @SupplierID_1 int,

@ProductName_2 nvarchar(40 output

相关文档
最新文档