玩命偷香在哪看:SQL 高手请进

来源:百度文库 编辑:中科新闻网 时间:2024/05/04 17:02:01
SQL中的创建存储过程是什么意思 是把对数据库的操作记录下来吗

按你的思路应该是把对数据库的操作的过程存储起来。其实就是把一系列语句都存储在系统表中,以后执行,只需执行存储过程名即可。

以下是SQL SERVER帮助中的说明,直接给你copy过来了:)
-------------------------------------

存储过程可以使得对数据库的管理、以及显示关于数据库及其用户信息的工作容易得多。存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其它强大的编程功能。

存储过程可包含程序流、逻辑以及对数据库的查询。它们可以接受参数、输出参数、返回单个或多个结果集以及返回值。

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

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

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

存储过程在创建时即在服务器上进行编译,所以执行起来比单个 SQL 语句快。

存储过程,你可以理解为用SQL语言编写的过程,可以在SQL语句中调用,也可以在ASP等语言中调用。

比如你定义了这样一个存储过程:

CREATE Procedure dbo.User_Read
(
@User_Id bigint
)
AS
select * from Users where User_Id=@User_Id
GO

那么asp里的SQL调用就可以这样写:

rs.open "exec User_Read "&Id,conn,3,3

还可以通过cmd来进行复杂的存储过程调用,如果你对数据库的操作较为复杂的话,存储过程是你的不二选择!

举个例子:

CREATE Procedure dbo.User_Del
(
@User_Id bigint,
@Result varchar(20) output
)
as
if exists (select Users_Id from Users where Users_Id=@User_Id)
begin
delete Users where Users_Id=@User_Id

set @Result='Del_OK' /*删除成功*/
end
else
begin
set @Result='Del_Fail' /*用户不存在,无法删除*/
end
GO

然后ASP里可以这样调用:

Set cmd = Server.CreateObject("ADODB.Command")
Set cmd.ActiveConnection = Conn
cmd.CommandText = "dbo.User_Del"
cmd.CommandType = &H0004

cmd.Parameters.Append cmd.CreateParameter("@User_Id",3)
cmd.Parameters.Append cmd.CreateParameter("@Result",200,2,20)

cmd("@User_Id")=User_Id
cmd.execute

Result = cmd("@Result")
Set cmd = Nothing

Select Case Result

Case "Del_OK"

Message = "No"
Act = "Go"
Call Error()

Case "Del_Fail"

Message = "该用户不存在!"
Act = "Back"
Call Error()

End Select

存储过程是存储在数据库的过程,用于提高效率和封装操作以及建立触发器、任务...