SQL 动态更改数据库并创建视图
SQL change database dynamically and create view
我需要在另一个数据库中创建一个视图。
我有一些这样的代码:
--sql start
USE MyDB1
GO
CREATE PROCEDURE [dbo].My_procedure
DECLARE @prm_Name VARCHAR(60)
AS
BEGIN
DECLARE @sql = ''
SET @sql = concat('USE MyDB2
GO
CREATE VIEW [dbo].[',@prm_Name,'_view]
AS
SELECT *
FROM [dbo].', @prm_Name)
EXECUTE(@sql)
END
--sql end
但是我在调用这个程序时在 'GO' 附近有语法错误。
我测试:
set @sql = concat('
CREATE VIEW [MyDB2].[dbo].[',@prm_Name,'_view]
AS
SELECT * FROM [dbo].',@prm_Name)
execute(@sql
但我有这个错误:"'CREATE/ALTER VIEW' 不允许将数据库名称指定为对象名称的前缀。"
如何正确创建视图?
我用了"execute('execute...."。它的工作))
最终代码:
SET @sql = concat('
CREATE VIEW [dbo].[',@prm_Name,'_view]
AS
SELECT *
FROM [dbo].', @prm_Name)
SET @sql = concat('
USE MyDB2;
execute(''',@sql,''')')
EXECUTE(@sql)
我需要在另一个数据库中创建一个视图。
我有一些这样的代码:
--sql start
USE MyDB1
GO
CREATE PROCEDURE [dbo].My_procedure
DECLARE @prm_Name VARCHAR(60)
AS
BEGIN
DECLARE @sql = ''
SET @sql = concat('USE MyDB2
GO
CREATE VIEW [dbo].[',@prm_Name,'_view]
AS
SELECT *
FROM [dbo].', @prm_Name)
EXECUTE(@sql)
END
--sql end
但是我在调用这个程序时在 'GO' 附近有语法错误。 我测试:
set @sql = concat('
CREATE VIEW [MyDB2].[dbo].[',@prm_Name,'_view]
AS
SELECT * FROM [dbo].',@prm_Name)
execute(@sql
但我有这个错误:"'CREATE/ALTER VIEW' 不允许将数据库名称指定为对象名称的前缀。"
如何正确创建视图?
我用了"execute('execute...."。它的工作))
最终代码:
SET @sql = concat('
CREATE VIEW [dbo].[',@prm_Name,'_view]
AS
SELECT *
FROM [dbo].', @prm_Name)
SET @sql = concat('
USE MyDB2;
execute(''',@sql,''')')
EXECUTE(@sql)