国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > 数据库 > Sqlserver > 存储过程必须是批查询中的第一条语句

存储过程必须是批查询中的第一条语句

来源:程序员人生   发布时间:2014-03-09 07:16:29 阅读次数:2605次

体验存储过程必须是批查询中的第一条语句的作用

看代码如下:

T-SQL
-------------------------------------------
--在查询分析器里面执行proc中的语句
use pubs
go
create proc proc_P as select * from sysobjects
go
drop proc proc_P
--可以正常执行

--下面将这个在master库弄成存储过程,然后执行存储过程是否可以在pubs建立proc_P这个存储过程呢?

---------------master库中创建存储-----------------------------
--制表符 CHAR(9)
--换行符 CHAR(10)
--回车 CHAR(13)

create proc proc_M
as
declare @sql varchar(2000)
set @sql='use pubs'+ CHAR(10) + CHAR(13) +' go create proc proc_P as select * from sysobjects go'
exec(@sql)
go

---------------执行存储过程-----------------------------
exec proc_M

------------------错误信息-------------------------------

服务器: 消息 170,级别 15,状态 1,行 2
第 2 行: 'go' 附近有语法错误。
服务器: 消息 111,级别 15,状态 1,行 3
'CREATE PROCEDURE' 必须是批查询中的第一条语句。
--------------------------------------------------------

'CREATE PROCEDURE' 必须是批查询中的第一条语句阻止了语句的执行。

结论:初越的体验到了存储过程必须是批查询中的第一条语句语法结构的重要性,如若不然就可以跨越数据库建立存储过程,表等,
这样一来的话。其他的库中的数据和信息就很容易被攻击和窃取。

生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生