我需要在另一个数据库中创建一个视图。
我有一些这样的代码:
--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'不允许将数据库名称指定为对象名称的前缀。”
如何正确创建视图?
答案 0 :(得分:0)
我使用了“ 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)