任何想法是否可以使用单独的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