日期:2014-05-16  浏览次数:20359 次

关于存储过程中创建视图的问题
开始我在begin end 里 create view as  V_Hello  ....
系统提示有语法错误 XXX必须是批处理中仅有的语句
后来我用 exec('create view as V_Hello ...') 来创建视图 
这样没提示错误 但是 我想在这个存储过程里 
select * from V_Hello 系统在V_Hello下打红线 
然后执行整个创建存储过程的语句 报错: 找不到V_Hello这个存储过程 呵呵 

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
最终想问的是:
如果我要在一个存储过程中建立一个表 在表中插入数据后 创建一个对应的视图
然后再查询这个视图 
怎么办?

------解决方案--------------------
我试了一下,是可以的:

create proc dbo.procxxx
as

if OBJECT_ID('abc123') is not null
   drop table abc123

--创建表
create table abc123(v int)

--插入数据
insert into abc123
values(1)


exec('if OBJECT_ID(''v_abc123'') is not null
      drop view v_abc123');

--创建视图
exec('create view dbo.v_abc123 as select * from abc123;');

select *
from dbo.v_abc123

go


exec dbo.procxxx
/*
v
1
*/

------解决方案--------------------
刷新一下缓存即可,貌似快捷键是ctrl+shift+r