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)