體驗存儲過程必須是批查詢中的第一條語句的作用
看代碼如下:
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' 必須是批查詢中的第一條語句阻止了語句的執行。
結論:初越的體驗到了存儲過程必須是批查詢中的第一條語句語法結構的重要性,如若不然就可以跨越數據庫建立存儲過程,表等,
這樣一來的話。其他的庫中的數據和信息就很容易被攻擊和竊取。