以下是对上面语句选项的解释:
选 项 描 述
<procedure_name> 这是你打算修改的存储过程名
<@parameter> 如果你想向存储过程传递参数,必须先在存储过程的声明部分定
义它们,该声明包括参数名、参数的数据类型和其他使用中所需
的特殊选项
<datatype> 如果你指定一个参数,必须指定参数的数据类型,它可以是任何
有效的数据类型,包括文本和图像
[VARYING] 当你将游标作为参数返回时,这个选项应被指定
[=default] 这个选项用于指定特定参数的缺省值。如果过程在执行的时候这
个参数没有赋值,将使用本缺省值来取代。本值可以是 NULL值,或是其他符合该数据类型的合法值。对于字符串数据,如果该参
数是与LIKE参数联合使用的话,该值可以包括含通配符
[OUTPUT] 这一可选关键字用于指定该参数是输出参数。当过程执行完成后,
该参数值能被返回到正在执行的过程里。文本或图像数据类型不能
作为输出参数使用
[,…] 这一符号指明你可以在一个存储过程中指定多个参数。SQL Server在单个存储过程中最多可有1 024个参数
WITH RECOMPILE 这个选项强制SQL Server在每一次执行存储过程时都重新编译。当使用临时值和对象时,你应该使用它
WITH ENCRYPTION 这一选项强制SQL Server对存储在系统备注表中的存储过程文本进行加密。这就允许你创建和重新分布数据库,而不用担心用户
会获得存储过程的原始代码
WITH RECOMPILE,ENCRYPTION 这一选项强制SQL Server重新编译和加密存储过程
AS 表明存储过程的定义将要开始
<sql_statements> 它是组成存储过程的不同语句
例如,要修改我们前面创建的 usp_insert_new_author存储过程,将CA作为缺省值插入到
state列中,可以运行程序清单 20-5中的查询。
程序清单20-5 修改存储过程
这样不需要修改任何关联或许可就可以改变存储过程了。现在我们已经创建了一些存储
过程,让我们来看看它们的运行情况。
20.4 运行存储过程
正如我们所看到的,运行存储过程实际上是很简单的。你可以采用两种方法。第一,可
202 SQL Server 7 24学时教程
以通过在SQL Server Query Analyzer的查询窗口键入存储过程名来执行。如果仅仅运行存储过
程的话,这种方法是可取的。但是如果在批中用这种方法执行多个存储过程,就会出现问题,
那么我们就必须使用EXECUTE语句。EXECUTE语句的语法如下:
EXECUTE<procedure_name>
这里<procedure_name>是你所要执行的存储过程的名称。
20.5 删除存储过程
总有一天,你需要将大部分的存储过程从系统中删除。这可能是因为你的生意蒸蒸日上,
超出了原存储过程所提供的功能,或者是因为这个功能已经不再需要了。如果你确定不再需
要由存储过程执行这一功能,就可以把该过程从系统中删除。注意,确定到底还需不需要这
个存储过程所提供的功能,这一点十分重要。因为如果你确实仍需要使用的话,将不得不重
建这个存储过程。删除存储过程可以使用 DROP PROCEDURE 命令,其语法如下:
DROP PROCEDURE <procedure_name>
这里<procedure-name>是需要从系统中删除的存储过程的名称。记住,这种删除是永久
的,如果你后来发现仍需要使用它的话,则必须重新创建。
20.6 课时小结
如果能够正确地安排,存储过程将成为 SQL Server的一个强大特征。存储过程可以根据
你的设置完成从简单的查询到应用程序逻辑控制的任何事情。在这一学时里,我们首先学习
了用CREATE PROCEDURE命令创建存储过程和用 ALTER PROCEDURE命令修改存储过程,
接着学习了运行存储过程。最后学习了用 DROP PROCEDURE命令删除旧的存储过程。
20.7 专家答疑
问题:数据库中有多少存储空间可以用来存储每一个存储过程?
解答:SQL Server并未直接在服务器里给存储过程分配存储空间。你可以根据创建存储
过程所需脚本的大小来估计需要多少存储空间。
问题:在存储过程中放置应用程序逻辑是很糟糕的事情吗?
解答:这负面影响并不是很大。但是在大多数情况下,我们应该将逻辑放置在中间层或
应用程序自身中(也就是说,通常只用SQL Server来存储数据)。
20.8 课外作业
这些思考题和练习题是供你加深理解用的。答案可以在附录“答案”中找到。
20.8.1 思考题
1) 什么是存储过程?
2) 什么命令用来创建存储过程?
3) 可以利用什么在存储过程中插入数据?
4) 可以用什么命令来修改存储过程?
5) 同删除和重建存储过程相比,修改存储过程有什么好处?
203第20学时 存 储 过 程
6) 什么是关联?
7) 用什么命令从系统中删除存储过程?
20.8.2 练习题
创建一个存储过程,当操作者运行它并传递作者的姓的任一部分后,返回所有关于这个
作者的地址信息。
上一页 [1] [2] [3]