sql-server – 在另一个数据库中创建存储过程
发布时间:2021-04-02 04:40:28 所属栏目:MsSql教程 来源:网络整理
导读:任何想法是否可以单独使用T-SQL在另一个数据库中创建一个过程,其中数据库的名称是预先知道的并且必须从表中读取?有点像这个例子: Use [MasterDatabase]Declare @FirstDatabase nvarchar(100)Select Top 1 @FirstDatabase=[ChildDatabase] From [ChildDataba
|
任何想法是否可以单独使用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+']'+@CRLF+
'Go'+@CRLF+
'Create Proc [Test] As Select 123'
Exec (@SQL)
看看我想做什么?此示例失败,因为Go实际上不是T-SQL命令,但是它由查询分析器/ SQL管理工作室识别并产生错误.删除Go也会失败,因为Create Proc必须是脚本的第一行. Arrgg! T-SQL的语法不允许你这样做: 创建[OtherDatabase].[dbo].[测试] 这是一种耻辱,因为它会起作用!你可以用Select语句做到这一点,耻辱它是不一致的: 选择*来自[OtherDatabase] .. [TheTable] 干杯,罗布. 解决方法这是一种痛苦,但这就是我所做的.我从我在sqlteam上找到的一个例子中得到了这个,我想 – 你可能有一些引用问题与我做不加区分的REPLACE的方式:DECLARE @sql AS varchar(MAX)
DECLARE @metasql as varchar(MAX)
DECLARE @PrintQuery AS bit
DECLARE @ExecQuery AS bit
SET @PrintQuery = 1
SET @ExecQuery = 0
SET @sql =
'
CREATE PROCEDURE etc.
AS
BEGIN
END
'
SET @metasql = '
USE OtherDatabase
EXEC (''' + REPLACE(@sql,'''','''''') + ''')
'
IF @PrintQuery = 1
PRINT @metasql
IF @ExecQuery = 1
EXEC (@metasql) (编辑:均轻资讯网_我爱站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql-server – sysmultiobjrefs SQL 2005上的TempDB争用
- sql-server – 我可以通过更新分区键在分区之间移动行吗?
- sql-server – 如何有效地检查多列上的EXISTS?
- sql-server – 实体框架缓存查询计划性能随着不同参数而降低
- sql-server – 从未知来源恢复备份的安全隐患?
- SQL集合函数中case when then 使用技术
- sql-server – SQL Server 2008:找出表中的主键/外键?
- sql-server – 最大用户连接数
- sql-server – SSD(Raid 1)vs SAS(Raid 10)Sql Server硬件推
- sql – 按日期分组,即使没有找到记录也返回行
站长推荐
热点阅读

