可以通过存储过程创建视图吗?

时间:2012-07-18 13:38:20

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

create procedure pro_training2
as 
begin
    create view Tab1view As
      select * from tab1
end

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

3 个答案:

答案 0 :(得分: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

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

答案 1 :(得分:0)

您已使用MySQL标记,但上述内容不是MySQL语法。

无论如何,如果你的意思是MySQL:是的,可以在一个过程中发出CREATE VIEW,但使用不同的语法:

CREATE PROCEDURE pro_training2()
MODIFIES SQL DATA

BEGIN
  create view Tab1view As select * from tab1;
END

答案 2 :(得分:0)

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

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