體驗(yàn)存儲(chǔ)過(guò)程必須是批查詢(xún)中的第一條語(yǔ)句的作用
看代碼如下:
T-SQL
-------------------------------------------
--在查詢(xún)分析器里面執(zhí)行proc中的語(yǔ)句
use pubs
go
create proc proc_P as select * from sysobjects
go
drop proc proc_P
--可以正常執(zhí)行
--下面將這個(gè)在master庫(kù)弄成存儲(chǔ)過(guò)程,然后執(zhí)行存儲(chǔ)過(guò)程是否可以在pubs建立proc_P這個(gè)存儲(chǔ)過(guò)程呢?
---------------master庫(kù)中創(chuàng)建存儲(chǔ)-----------------------------
--制表符 CHAR(9)
--換行符 CHAR(10)
--回車(chē) 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
---------------執(zhí)行存儲(chǔ)過(guò)程-----------------------------
exec proc_M
------------------錯(cuò)誤信息-------------------------------
服務(wù)器: 消息 170,級(jí)別 15,狀態(tài) 1,行 2
第 2 行: 'go' 附近有語(yǔ)法錯(cuò)誤。
服務(wù)器: 消息 111,級(jí)別 15,狀態(tài) 1,行 3
'CREATE PROCEDURE' 必須是批查詢(xún)中的第一條語(yǔ)句。
--------------------------------------------------------
'CREATE PROCEDURE' 必須是批查詢(xún)中的第一條語(yǔ)句阻止了語(yǔ)句的執(zhí)行。
結(jié)論:初越的體驗(yàn)到了存儲(chǔ)過(guò)程必須是批查詢(xún)中的第一條語(yǔ)句語(yǔ)法結(jié)構(gòu)的重要性,如若不然就可以跨越數(shù)據(jù)庫(kù)建立存儲(chǔ)過(guò)程,表等,
這樣一來(lái)的話。其他的庫(kù)中的數(shù)據(jù)和信息就很容易被攻擊和竊取。