使用SQL Enterprise Manager 创建存储过程

假如你要创建一个复杂的存储过程，使用SQL Enterprise Manager要比ISQL/w要容易得多，该程序允许你更容易地修改存储过程，它可以自动为你删除和重新创建存储过程。

要使用SQL Enterprise Manage来创建一个存储过程。首先启动该程序，选择你要用于存储表的数据库，然后在菜单上选择Manage|Manage Stored Procedure,这时就会显示如图12。4所示的窗口。

当你第一次打开存储过程管理对话框窗口时，会自动显示文本CREATE PROCEDURE <PROCEDURE NAME>。如果学过上面部分的内容，你就会对该文本非常的熟悉。这是CREATE PROCEDURE语句。替换<PROCEDURE NAME>成你所需要的名称。

在关键词AS后面，你可以输入组成你存储过程的语句。比如，假设你在数据库中有一个名为Philosophers的数据库表，其中包含了一些哲学家的列表。下面的存储过程在如果在数据库中有Plato存在时，会打印“Plato is a philosopher

”；否则它会打印“Plato is not a philosopher”

CREATE PROCEDURE check_philosophers AS

IF EXISTS(SELECT name FROM Philosophers WHERE name=

”Plato”)

PRINT “Plato is a philosopher

”

ELSE

PRINT “Plato is not a philosopher”

当你已经完成输入存储过程后，你可以点击保存对象按钮来保存之（它看起来象一个绿色的三角形）。

图12.4 存储过程管理对话框窗口

为了观看在你第一次保存之后的存储过程的文本，你需要在Procedure下拉菜单中再次选择该存储过程。SQL Server会自动在你的文档中插入新的语句。比如，在保存完check_philosophesr过程之后，会显示如下的文本：

if exists (select * from sysobjects where id=object_id(

‘dbo.check_philisophers’) and sysstat & 0xf=4)

drop procedure dbo.check_philosophers

GO

CREATE PROCEDURE check_philosophers AS

IF EXISTS(SELECT name FROM Philosophers WHERE name=

”Plato”)

PRINT “Plato is a philosopher

”

ELSE

PRINT “Plato is not a philosopher”

GO

为什么SQL Server要添加这些语句呢？这些语句是什么用的呢？这些添加的语句并不包含在存储过程中。它们的使用是使存储过程的使用变得更加容易。

当在过程中的第一个语句执行时，它检查是否有存储过程check_philosophers已经存在于数据库中。假如该过程已经存在，语句会删除该过程。这样，假如你修改了你的存储过程，然后点击Save Object按钮时，该语句会确保过程在修改后再次创建之前已经被删除了。

注意

在修改你的存储过程时，注意不要删除那些添加的语句。假如说你删除了第一个语句，你就不能正确地保存你的存储过程。相反的，你就会获得一个错误信息告诉你，存储过程已经存在于数据库中（假如你正处于这种情况下，你只需要用语句DROP PROCEDURE来删除前一版本）。

使用SQL Enterprise Manager而不是ISQL/w来创建你的存储过程的主要优点是使用Enterprise Manage可以在将来很容易地修改存储过程，在已经保存了存储过程之后，你可以使用管理存储过程对话框来选择和修改它。使用ISQL/w在创建了存储过程之后对其进行修改是非常困难的。