大学IT网 - 最懂大学生的IT学习网站! QQ资料交流群:367606806
当前位置:大学IT网 > ASP.NET技巧 > SQL存储过程详细基础入门

SQL存储过程详细基础入门(1)

关键词:SQL存储过程详细基础入门  阅读(2537) 赞(32)

[摘要]本文是SQL存储过程详细基础入门教程,从存储过程的基本概念讲起,再讲到存储过程的实现和管理,步步深入,让您更好地理解SQL存储过程。

存储过程的优点

1)执行速度快

存储过程在创建时就经过了语法检查和性能优化,因此在执行时不必再重复这些步骤。存储过程在第一次调用后,就驻留在内存中,不必再经过编译和优化,所以执行速度很快。在有大量批处理的T-SQL语句要重复执行的时候,使用存储过程可以极大地提高运行效率。

2)模块化程序设计

只须创建存储过程一次,并将其存储在数据库中,可以在程序中多次调用该存储过程。用户可以独立于应用程序而对存储过程进行修改。

3)减少网络通信量

存储过程中可以包含大量的Transact-SQL语句。在进行调用时,只需要使用一条语句就可以实现,而不需要在网络中发送数百行代码。

4)保证系统的安全性

可以设置用户通过存储过程来对某些关键数据进行访问,但不允许用户直接使用T-SQL语句或企业管理器来对数据进行访问。

存储过程的分类

SQL Server2005提供了三种存储过程:用户存储过程、系统存储过程和扩展存储过程。

1)用户存储过程

用户编定的可以重复用的T-SQL语句功能模块,并且在数据库中有惟一的名称,可以附带参数,完全由用户自己定义、创建和维护。

2)系统存储过程

Microsoft SQL Server2005提供,通常使用“sp_”为前缀,主要用于管理SQL Server和显示有关数据库及用户的信息。这些存储过程可以在程序中调用,完成一些复杂的与系统相关的任务,所以用户在开发自定义的存储过程前,最好能清楚地了解系统存储过程,以免重复开发。

系统存储过程在master数据库中创建并保存,可以从任何数据库中执行这些存储过程。另外用户自创建的存储过程最好不要以“sp_”开头,因为用户存储过程与系统存储过程重名时,用户的存储过程永远不会被调用。

存储过程的概念

存储过程(Stored Procedure)是在数据库服务器端执行的一组T-SQL语句的集合,经编译后存放在数据库服务器中。存储过程作为一个单元进行处理并由一个名称来标识。它能够向用户返回数据、向数据库表中写入或修改数据,还可以执行系统函数和管理操作。用户在编程过程中只需要给出存储过程的名称和必需的参数,就可以方便地调用它们。

存储过程可以提高应用程序的处理能力,降低编写数据库应用程序的难度,同时还可以提高应用程序的效率。存储过程的处理非常灵活,允许用户使用声明的变量,还可以有输入输出参数,返回单个或多个结果集以及处理后的结果值。

  创建带参数的存储过程

创建带参数的存储过程首先要在存储过程中声明该参数,每个存储过程参数都必须用惟一的名称进行定义。与标准的T-SQL变量相同,参数名必须以@为前缀,并且遵从对象标识符规则。当用户不提供该参数的值时可以使用一个默认值来代替。

在执行带参数的存储过程时,既可以通过显式指定参数名称并赋予适当的值,也可以通过提供在CREATE PROCEDURE语句中给定的参数值(不指定参数名称)来向存储过程传递值。

1.不带默认值的参数

创建一个参数不带默认值的存储过程,在调用该存储过程时,必须对存储过程中的所有参数进行赋值,如果有一个参数没有赋值,则无法调用该存储过程。

例如创建一个不带参数默认值的存储过程loving10,并通过指定参数的赋值,查询course表中指定课程的信息。

USE db_student --打开创建存储过程的数据库
--创建存储过程
CREATE PROCEDURE loving10
@课程类别 varchar(20), --定义参数
@学分 int
AS
Select *
from course
where 课程类别=@课程类别 and 学分>@学分

执行loving10存储过程有两种方法:

1)按存储过程中参数的顺序对参数进行赋值

示例:执行不带参数的存储过程

执行loving10存储过程。SQL语句如下。

USE db_student

exec loving10 '歌曲类',8

运行的结果如图所示。



(2)执行存储过程时,按任意顺序对参数进行赋值

示例:执行按任意顺序对参数进行赋值的存储过程执行loving10存储过程。SQL语句如下。

USE db_student
exec loving10 @学分=6, @课程类别='娱乐类'

运行的结果如图所示。


2.带默认值的参数

在执行存储过程PRO_Student_IN时,如果缺省任何一个参数,将会产生错误,解决这种问题的方法是建立使用默认值的参数。只要在参数的定义之后加上等号,并在等号后面写出默认值。

«上一页1234...7下一页»


相关评论