【问题标题】:Can a view be created by a stored procedure?可以通过存储过程创建视图吗?
【发布时间】:2012-07-17 13:39:57
【问题描述】:
create procedure pro_training2
as 
begin
    create view Tab1view As
      select * from tab1
end

这样可以在采购中创建视图吗?

【问题讨论】:

  • 为什么,哦,为什么,你想这样做吗?你能决定你是使用 MySQL 还是 SQL Server 吗?

标签: c# mysql sql sql-server sql-server-2008


【解决方案1】:

使用 sp_executesql 并指定数据库名称:

EXEC myDb1..sp_executesql N'CREATE VIEW Tab1view As select * from tab1'

【讨论】:

    【解决方案2】:

    尽管上面不是 MySQL 语法,但您已标记 MySQL。

    无论如何,如果您确实是指 MySQL:是的,可以在过程中发出 CREATE VIEW,但使用不同的语法:

    CREATE PROCEDURE pro_training2()
    MODIFIES SQL DATA
    
    BEGIN
      create view Tab1view As select * from tab1;
    END
    

    【讨论】:

      【解决方案3】:

      您可以使用动态 SQL 来执行此操作,例如

      CREATE PROCEDURE dbo.pro_training2
      AS
      BEGIN
        DECLARE @sql NVARCHAR(MAX);
      
        SET @sql = N'CREATE VIEW dbo.Tab1View AS SELECT <columns> FROM dbo.tab1;';
      
        EXEC sp_executesql @sql;
      END
      GO
      

      但这是一种严重的代码异味。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-04
        • 1970-01-01
        • 2023-04-01
        • 2017-09-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多