[ Fs422.CoM]        热烈庆祝风沙电脑技术网站今天开张,做了一年的垃圾站,决定做一个对自己有帮助的站,或许也能帮到你,谢谢你的光临!!!如果有什么问题,可以点此给我留言------风少 2008.7.31
返回首页
当前位置: 首页 > SQL > SQL案例学习 > 浏览正文

修改、删除及查看存储过程

时间:2009年05月06日来源:网络 作者:hn1688 点击:
创建存储过程之后,可以通过企业管理器或在查询分析器中执行Transact-SQL语言的ALTER PROCEDURE命令修改存储过程。 当不再使用一个用户存储过程时,可以把它从数据库中删除。 通过企业管理器或在查询分析器中执行Transact-SQL语言的DROP PROCEDURE命令可以删除用户创建的存储过程。此外,用户存储过程也可以重新命名。
 创建存储过程之后,可以通过企业管理器或在查询分析器中执行Transact-SQL语言的ALTER PROCEDURE命令修改存储过程。
当不再使用一个用户存储过程时,可以把它从数据库中删除。
通过企业管理器或在查询分析器中执行Transact-SQL语言的DROP PROCEDURE命令可以删除用户创建的存储过程。此外,用户存储过程也可以重新命名。

    一、修改存储过程定义
使用企业管理器修改存储过程
使用企业管理器可以很方便地修改存储过程定义。双击该存储过程,在“存储过程属性”对话框中,在文本框内修改定义存储过程的Transact-SQL语句,修改后也可以进行语法检查。单击“确定”按钮就完成了修改存储过程。

    二、修改存储过程
使用ALTER PROCEDURE语句修改存储过程
语法格式:
ALTER PROC[EDURE]存储过程名[;下标]
[{@形参 数据类型}
[VARYING][=默认值][OUTPUT] ][,...n1]
[WITH  { RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION } ]
AS Transact-SQL 语句 [...n2] /*执行的操作*/

各参数含义与CREATE PROCEDURE命令相同。
两种方法的区别
从形式看,该语句与CREATE PROCDURE语句的主要差别仅在开头的关键字不同(一为CREATE,另一为ALTER),但ALTER PROCEDURE语句不会更改权限和启动属性,即如果我们先删除某存储过程,再用CREATE PROCDURE语句创建与它同名的存储过程,虽然两者的语句一致,但原先该存储过程的权限以及启动属性将不复存在。
而用ALTER PROCEDURE更改存储过程后,该过程的权限和启动属性保持不变。另外,如果原来的过程定义是用 WITH ENCRYPTION 或 WITH RECOMPILE 创建的,那么只有在 ALTER PROCEDURE 中也包含这些选项时,这些选项才有效。

[例1] 对存储过程student_info1进行修改,重新计算学分。
程序清单:
USE  teachdb
GO
ALTER  PROCEDURE  student_info1
     @name  char(8),@cname  char(16)
AS
SELECT student.s_no AS学号,student.s_name AS姓名,course.c_name AS课程名,choice.score AS 成绩,course.c_score*choice.score/100  AS 获得学分
FROM  student,choice,course
WHERE student.s_name=@name and course.c_name=@cname
and student.s_no=choice.s_no and course.c_no=choice.c_no
GO
EXEC  student_info1  '袁敏',  'C语言'

通过查询分析器运行以上程序,结果如下图所示。



[例2]创建名为select_students的存储过程,该过程可查询所有学生信息。当需要改为能检索计算机专业的学生信息时,用ALTER  PROCEDURE重新定义该存储过程。
程序清单:
USE  teachdb
GO
IF EXISTS(SELECT name  FROM sysobjects WHERE name='select_students' AND  type='P')
DROP  PROCEDURE  select_students    /*若该存储过程已存在,则先删除*/
GO
/*创建存储过程*/
CREATE  PROCEDURE  select_students 
AS 
SELECT  *  FROM  student
ORDER  BY student.s_no
GO
EXEC select_students
GO
/*修改存储过程select_students*/
ALTER  PROCEDURE  select_students
WITH  ENCRYPTION
AS
SELECT *  FROM  student
      WHERE s_department='计算机'
      ORDER BY student.s_no
GO
EXEC select_students

通过查询分析器运行以上程序,结果如下图所示。



    三、重新命名用户存储过程
用户存储过程可以更改名字,方法有以下两种:
使用企业管理器修改存储过程名称。
在企业管理器中,右击要操作的存储过程名称,从弹出的快捷菜单中选择“重命名”选项,即可修改存储过程名称。
使用系统存储过程修改存储过程名。
修改存储过程名称也可以使用系统存储过程sp_rename。
语法形式:
sp_rename <原存储过程名称>,<新存储过程名称>
[例3] 将student_info1存储过程名称修改为student_information。
USE teachdb
GO
sp_rename student_info1,student_information

    四、删除用户存储过程
当不再需要使用一个存储过程时,可以把它从数据库中删除。方法有以下两种:
使用企业管理器删除存储过程
在企业管理器中选择对应数据库中要删除的存储过程,然后单击工具栏中的 按钮,或者单击鼠标右键,在弹出的快捷菜单中选择【删除(D)】选项,此时弹出“除去对象”对话框。单击【全部除去】按钮,即完成存储过程的删除。

使用DROP PROCEDURE语句删除用户存储过程
语法格式:
DROP PROCEDURE 存储过程名称 [,…n]
功能:
从当前数据库中删除一个或多个存储过程或存储过程组。如果要删除多个存储过程,各存储过程名间用逗号分隔。

[例4]删除teachdb数据库中的student_info2存储过程。
USE teachdb
GO
DROP PROCEDURE student_info2

若要查看存储过程名列表(存储在sysobjects系统表内),可使用sp_help系统存储过程。若要显示未加密的存储过程定义文本(存储在syscomments系统表内),可使用sp_helptext系统存储过程。删除某个存储过程时,将从 sysobjects 和 syscomments 系统表中删除有关该存储过程的信息。

顶一下
()
%
踩一下
()
%
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
推荐内容
  • 修改、删除及查看存储过程

    创建存储过程之后,可以通过企业管理器或在查询分析器中执行Transact-SQL语言的ALTER P

  • 创建及使用存储过程

    用企业管理器创建存储过程stu_proc1,要求能从学生表查询学号为102的学生信息。在企业管理器中

  • SQL存储过程

    在大型的数据库系统中,很多情况下,许多代码被重复使用多次,每次都输入相同的代码不但繁琐,更由于在客户

  • 服务器角色及应用程序角色

    前面我们已经介绍了数据库角色的概念和操作,数据库角色中可以包括用户以及其它的数据库角色。如下图所示,

  • 数据库用户帐户及权限管理

    1.登录帐号与用户帐号当用户通过身份验证,以某个登录帐号连接到SQL Server以后,还必须取得相

  • SQL Server 2000 登录认证

    SQL Server数据库系统通常运行在基于NT构架的Windows 2000上,而Windows

  • SQL Server 2000 系统安全机制

    SQL Server 作为一个网络数据库管理系统,具有完备的安全机制,能够确保数据库中的信息不被非法

  • 事务的使用

    一.事务的概念 所谓事务(Transaction ),是指一个操作序列,这些操作序列要么都被

  • 修改和删除触发器

    若要修改触发器的定义,可以使用Alter Trigger语句来完成,也可以使用企业管理器来完成这个任

  • 创建触发器

    触发器是一类特殊的存储过程,其特殊性在于它并不需要由用户来直接调用,而是在对表或视图发出Insert