程序好多人改过,现在也不知道那些字段没有用过了,担心改了这个冲了别的字段,怎么能查询下呢?
------解决方案--------------------
全文检索,点中project,research,呵呵,不好整
------解决方案--------------------
就好比找出哪些文章用了abc三个字母一样。程序越改越超出控制了。。。
存储器好像有办法知道引用了哪些字段。
pb中如果你是用画板生成的字段,都好搜索。如果是手写的sql因为会省去表名并使用别名。。这样很难搜的。
你如果搜表名(引用不多的情况下),可能希望更大一些。然后慢慢排查。
其实pb每次你编译时或者打开dw时,它会校验,如果你删除掉一个会用到的字段会提示的。所以如果有谁可以用orca开发一个工具,把所有的sql语句提取出来。能做出一个解决此问题的工具。。呵呵
------解决方案--------------------
对了。删掉那个字段(数据先拷贝走,否则丢失),再全编译应该能发现吧?能吗?
用了动态语句不知道会不会检测到。
------解决方案--------------------
如果你不想非常负责任,并且花大量时间去检查的话.
如果你的程序很多很多地方用,各自的数据库时分开的(你无连到所有数据库中,看哪个COLUMN在所有数据库中都为空,当然,就算在所有数据库中都为空,也不见得没人用过).
那就,加字段.
----------------------------------
假定你无法去每个地方手工加,则,兼容性起见
connect成功之后.
long i,
select count(your_column) into :i from your_table where 1=2;
if sqlca.sqlcode<>0 then//没有这个字段,
string Mysql
Mysql = "ALTER TABLE your_table add ......"
EXECUTE IMMEDIATE :Mysql ;//自动加字段
end if
------解决方案--------------------
这个问题是个容易理解的问题。只是涉及的地方有点多。
前台程序有(dw,以及dw的expression,动态sql,直接写的sql,游标),后台存储器,自定义函数,触发器,视图,还有存储器中拼接的动态语句等等都要用到。
当然你所指的字段肯定不止一个:)
数据库里引用字段恐怕通过系统表能找出一些位置。如果是纯文字拼接的,恐怕无能为力。
前端的pb中用到的,貌似你如果在有限的一段文字区域中同时匹配“字段名”与“表名”(正则)应该可以抓出其位置,这样建议的依据是:在你看来无法确认是否使用的字段一定是使用频率很低很低的字段,特例是你的字段名非常特殊,那也许整个项目搜索即可俘获。当然也要看有没有这样的工具可以提供这样的搜索服务了。
如果你坚决要排查这些设计出来而又没有使用的字段的话,大致只能如此。视其程序规模,如小,不足为惧,如庞大。放弃吧。
说错莫怪。知识面有限。