重建数据库视图方法
金蝶云社区-战斗车
战斗车
6人赞赏了该文章 3311次浏览 未经作者许可,禁止转载编辑于2017年06月12日 17:53:48

因为组织机构经常会被扩展增加字段,这时系统出厂的视图因为未包含该字段,导致一些通过视图访问组织的功能点报错,例如货主F8选择时会报字段不存在的错,这时就需要重建系统出厂的视图,将扩展的相关字段添加进去。
本贴举例说明在SQL环境下重建视图V_MFG_ORDEROWNERTYPE:

一、在查询分析器中执行SP_HELPTEXT V_MFG_ORDEROWNERTYPE,查询出这个视图的创建脚本;
二、将该视图的创建脚本拷出来,形如:
CREATE VIEW V_MFG_ORDEROWNERTYPE AS
SELECT FORGID fitemid, 'BD_OwnerOrg' fformid, FNUMBER fnumber, FORGID fmasterid, 0 fcreateorgid, 0 fuseorgid,
FDOCUMENTSTATUS fdocumentstatus, FFORBIDSTATUS fforbidstatus, FCREATORID fcreatorid, FMODIFIERID fmodifierid,FCREATEDATE fcreatedate, FMODIFYDATE fmodifydate
FROM T_ORG_ORGANIZATIONS
UNION
SELECT FCUSTID fitemid, 'BD_Customer' fformid, FNUMBER fnumber, FMASTERID fmasterid, FCREATEORGID fcreateorgid,
FUSEORGID fuseorgid, FDOCUMENTSTATUS fdocumentstatus, FFORBIDSTATUS fforbidstatus, FCREATORID fcreatorid,
FMODIFIERID fmodifierid, FCREATEDATE fcreatedate, FMODIFYDATE fmodifydate
FROM T_BD_CUSTOMER

三、修改该脚本,首先是将CREATE改成ALTER,然后是将要添加到该视图的字段加到SELECT后面,形如:
ALTER VIEW V_MFG_ORDEROWNERTYPE AS
SELECT FORGID fitemid, 'BD_OwnerOrg' fformid, FNUMBER fnumber, FORGID fmasterid, 0 fcreateorgid, 0 fuseorgid,
FBANKID AS FBANKID,
FDOCUMENTSTATUS fdocumentstatus, FFORBIDSTATUS fforbidstatus, FCREATORID fcreatorid, FMODIFIERID fmodifierid,FCREATEDATE fcreatedate, FMODIFYDATE fmodifydate
FROM T_ORG_ORGANIZATIONS
UNION
SELECT FCUSTID fitemid, 'BD_Customer' fformid, FNUMBER fnumber, FMASTERID fmasterid, FCREATEORGID fcreateorgid,
0 AS FBANKID,
FUSEORGID fuseorgid, FDOCUMENTSTATUS fdocumentstatus, FFORBIDSTATUS fforbidstatus, FCREATORID fcreatorid,
FMODIFIERID fmodifierid, FCREATEDATE fcreatedate, FMODIFYDATE fmodifydate
FROM T_BD_CUSTOMER

四、执行上一步修改好的脚本即可。