sqlserver2008 查询视图 和直接通过查询视图中语句返回的结果不同。

视图内容如下:
CREATE VIEW [dbo].[view_zy_allpatient]
AS
SELECT *, 'z' AS flag
FROM zy_actpatient
UNION ALL
SELECT *, 'c'AS flag
FROM zy_inactpatient
GO
查询方法1
SELECT * FROM view_zy_allpatient
此时返回的 flag 为null

查询方法1
SELECT *, 'z' AS flag
FROM zy_actpatient
UNION ALL
SELECT *, 'c'AS flag
FROM zy_inactpatient
此时返回的 flag 为z或者flag

重建视图后用方法一查询正常,哪位大侠给讲讲为什么???

一般你修改过表的字段类型,或增删过字段,都必须alert方式打开试图执行一次,以刷新试图
感觉好像视图缓存表结构
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-30
其实这个很正常了 没有刷新过来 你可以手动刷新
exec sp_refreshview 视图名称
相似回答