任何想法是否可以使用單獨的T-SQL在其他數據庫中創建過程,其中數據庫的名稱先前未知且必須從表中讀取?有點像這個例子:在另一個數據庫中創建存儲過程
Use [MasterDatabase]
Declare @FirstDatabase nvarchar(100)
Select Top 1 @FirstDatabase=[ChildDatabase] From [ChildDatabases]
Declare @SQL nvarchar(4000)
Declare @CRLF nvarchar(10) Set @CRLF=nchar(13)+nchar(10)
Set @SQL =
'Use [+'@Firstdatabase+']'[email protected]+
'Go'[email protected]+
'Create Proc [Test] As Select 123'
Exec (@SQL)
看看我在做什麼?這個例子失敗了,因爲Go實際上不是一個T-SQL命令,但它被查詢分析器/ SQL管理工作室識別併產生錯誤。刪除Go並且它也失敗,因爲Create Proc必須是腳本的第一行。 Arrgg!
T-SQL的語法不允許你做這樣的事情:
創建[OtherDatabase] [DBO] [測試]
這是一種恥辱,因爲它會工作一種享受。 !你可以做到這一點與Select語句,恥辱是不一致的:
SELECT * FROM [OtherDatabase] .. [TheTable]
乾杯,羅布。
如果你第一次更改數據庫EXEC然後exec的你storedproc? – 2009-01-27 15:25:02
我也會這樣做:首先發送零件之前「去」,然後(在第二個SQL語句)發送「創建proc ...」 – 2009-01-29 13:15:58