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

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

4

3 回答 3

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

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

于 2012-07-18T13:41:16.063 回答
0

尽管上面不是 MySQL 语法,但您已使用 MySQL 进行了标记。

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

CREATE PROCEDURE pro_training2()
MODIFIES SQL DATA

BEGIN
  create view Tab1view As select * from tab1;
END
于 2012-07-18T13:41:58.993 回答
0

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

EXEC myDb1..sp_executesql N'CREATE VIEW Tab1view As select * from tab1'
于 2012-07-18T13:43:20.040 回答