首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

视图带参?解决方案

2012-03-08 
视图带参?CREATE OR REPLACE VIEW V_DATMT_DNPORT_QE_VLANID(dnportid, vlanid)ASSELECT DISTINCT DNPORT.

视图带参?
CREATE OR REPLACE VIEW V_DATMT_DNPORT_QE_VLANID
(dnportid, vlanid)
AS
SELECT DISTINCT DNPORT.ID, MIN(DNVLAN.VLANID)
  FROM DNPORT, DNPORT_DNVLAN, DNVLAN, DNDEVICE, DNDEVICETYPE
 WHERE (DNPORT.ID = DNPORT_DNVLAN.DNPORTID)
  AND (DNDEVICE.ID = DNPORT.DNDEVICEID)
  AND (DNDEVICETYPE.ID = DNDEVICE.DNDEVICETYPEID)
  AND (DNVLAN.ID = DNPORT_DNVLAN.DNVLANID)
  AND (DNPORT.ISTEMPLATE = 0)
  AND (DNDEVICE.ISTEMPLATE = 0)
  --AND (DNDEVICETYPE.CATEGORY IN (4, 5)) --4: DSLAM, 5: 路由器
 GROUP BY DNPORT.ID


其中(dnportid, vlanid)这两个参数什么意思啊 去掉了 就报错 说”必须使用列别名表示MIN(DNVLAN.VLANID)表达式“?

[解决办法]
并且为表达式指定一个别名做为视图的字段名,这很好理解
CREATE OR REPLACE VIEW V_DATMT_DNPORT_QE_VLANID
as
SELECT DISTINCT DNPORT.ID, MIN(DNVLAN.VLANID) NEW_VLANID
FROM DNPORT, DNPORT_DNVLAN, DNVLAN, DNDEVICE, DNDEVICETYPE
 WHERE (DNPORT.ID = DNPORT_DNVLAN.DNPORTID)
AND (DNDEVICE.ID = DNPORT.DNDEVICEID)
AND (DNDEVICETYPE.ID = DNDEVICE.DNDEVICETYPEID)
AND (DNVLAN.ID = DNPORT_DNVLAN.DNVLANID)
AND (DNPORT.ISTEMPLATE = 0)
AND (DNDEVICE.ISTEMPLATE = 0)
--AND (DNDEVICETYPE.CATEGORY IN (4, 5)) --4: DSLAM, 5: 路由器
 GROUP BY DNPORT.ID
[解决办法]
CREATE OR REPLACE VIEW V_DATMT_DNPORT_QE_VLANID
(dnportid, vlanid)
为视图提供了字段名dnportid和vlanid
如果去掉(dnportid, vlanid)的话,则字段名从查询结果过取,MIN(DNVLAN.VLANID)不能作为字段名,所以出错。可以使用列别名解决

热点排行
Bad Request.