执行与修改存储过程

1.执行存储过程 

 要运行某个存储过程,只要简单地通过名字就可以引用它。如果对存储过程的调用不是批处理中的第一条语句,则需要使用EXECUTE关键字。下面是执行存储过程的语法格式。

[[EXEC[UTE]]]

   {[@return_status=]

   procedure_name[;number]|@procedure_name_var}

[[@parameter=]{value|@variable[OUTPUT]|[DEFAULT]]

[,...n]

[WITH RECOMPILE]

各选项的含义如下:

(1)@return_status:一个可选的整型变量,保存存储过程的返回状态。这个变量在EXECUTE语句使用前,必须已声明。

(2)@procedure_name_var:一个局部变量名,用来代表存储过程的名称。

(3)@patameter:过程参数,在CREATE PROCEDURE语句中定义。

(4)value:过程中参数的值。如果参数名称没有指定,参数值必须以CREATE PROCEDURE语句中定义的顺序给出。

其他数据和保留字的含义与CREATE PROCEDURE中价绍的一样。

例如,执行上例的存储过程goods_info。在SQL查询分析其中输入如下命令。EXEC goods_info

运行结果如下图所示:

存储过程的执行结果
 goods_nameclasification_nameunit_price
1IBM R51笔记本计算机9999.00
2旭日160-D1.7G笔记本计算机9499.00

2.修改存储过程

修改存储过程可以通过SQL Server管理平台和Transact-SQL语句实现。

1)使用SQL Server管理平台修改存储过程

修改存储过程的操作步骤如下:

(1)打开SQL Server管理平台,展开结点“对象资源管理器”→“数据库服务器”→“可编程性”→“存储过程”,选择要修改的存储过程,并右击,在弹出的快捷菜单中选择“修改”命令。

(2)此时在右边的编译器窗口中出现存储过程的源代码(将CREATE PROCEDURE 改为ALTER PROCEDURE),可以直接进行修改。修改完后单击工具栏中的“执行”按钮该存储过程,从而达到目的。

2)使用ALTER PROCEDUR语句修改存储过程

修改用CREATE PROCEDURE语句创建的存储过程,并且不改变权限的授予情况,不影响任何其他独立的存储过程或触发器,常使用ALTER PROCEDURE 语句。其语法规则如下:

ALTER PROC[EDURE] procedure_name[,number]

[{@parameter data_type}

[VARYING][=default][OUTPUT]][,...n]

[WITH {RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION}]

[FOR REPLICATION]

AS sql_statement[,...n]

其中的参数和保留字的含义与CREATE PROCEDURE语句中的相似。

举例:使用ALTER PROCEDURE 语句更改存储过程。

①创建存储过程employee_dep,以获取总经理办的男员工。

CREATE PROCEDURE employee_dep AS 

SELECT employee_name,sex,address,department_name 

FROM employee e INNER JOIN department d

ON e.department_id=d.department_id

WHERE sex='男'AND  e.department_id='D001'

GO

执行存储过程employee_dep,结果如下

执行结果
 employee_namesexaddressdepartment_name
1钱大理东风路79号销售部
2东方牧五一北路24号销售部

②用SELECT语句查询系统表sysobjects和syscomments,查看employee-dep存储过程的文本信息的代码如下:

SELECT o.id,c.text 

FROM sysobjects o INNER JOIN syscomments c ON o.id=c.id

WHERE o.type='P' AND o.name='employee_dep'

GO 

③使用ALTER PROCEDURE 语句对employee_dep过程进行修改,使其能够显示出所有男员工,并使employee_dep过程以加密方式存储在表syscomments中,其代码如下:

ALTER PROCEDURE employee_dep

WITH ENCRYPTION

SELECT employee_name,sex,address,department_name

FROM employee e INNER JOIN department d

ON e.department_id=d.department_id

WHERE sex='男'

GO

执行修改后的存储过程employee_dep,结果如下表所示。

修改后employee_dep存储过程的执行结果
 employee_namesexaddressdepartment_name
1钱大理东风路29号销售部
2郭文斌五一北路25号市场部

这是由于在ALTER PROCEDURE 语句中使用WITH ENCRYPTION 关键字对存储过程employee_dep文本进行了加密,其文本信息显示为NULL。

也可以使用系统存储过程sp_helptext显示存储过程的定义(存储在syscomments系统表内),其命令如下:sp_helptext employee_dep

结果为“对象‘employee_dep’的文本已加密“。

加密后存储过程的执行结果
 idtext
1837578022NULL



  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值