2012-07-18 83 views
0
create procedure pro_training2 
as 
begin 
    create view Tab1view As 
     select * from tab1 
end 

这是可能在采购中创建一个视图吗?可以通过存储过程创建视图吗?

+4

为什么,哦,为什么,你想这样做?你能决定你是否在使用MySQL或SQL Server吗? – 2012-07-18 13:39:55

回答

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 

但这是严重的代码异味。

0

虽然以上不是MySQL语法,但您已使用MySQL标记。

无论如何,如果你也意味着MySQL的:是的,这是可以从过程中发出CREATE VIEW,但使用不同的语法:

CREATE PROCEDURE pro_training2() 
MODIFIES SQL DATA 

BEGIN 
    create view Tab1view As select * from tab1; 
END 
0

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

EXEC myDb1..sp_executesql N'CREATE VIEW Tab1view As select * from tab1' 
相关问题