在oracle9i中的数据库中搜索其值为'xyz'的列名?

时间:2012-02-27 10:53:51

标签: plsql oracle9i

当我们对工具进行一些更改时,我们使用对某个数据库进行操作的工具来更新某些值。 这需要很长时间才能完成一些简单的任务。 我只需要找出哪个表,列和该列的值得到更新。

为此我需要找出整个数据库,其中column_name具有值“XYZ”和相应的表/表。

这些脚本。

1 个答案:

答案 0 :(得分:3)

仅仅因为可以完成某事并不意味着应该完成。

我知道你的流程是按照这种方式设计的,你很可能不想改变它,但是,如果你重新设计它以避免做一些非常认真的事情,你的生活会变得更好。不应该这样做。搜索整个数据库中的每个文本字段以搜索一些神奇的字符串是一个坏主意。它实际上只是一个大坏想法,它可能不是最坏的想法,但它是一个足够糟糕的想法,你应该认真考虑做其他事情,更好。

好的,那有什么不对呢?

首先,它表示您没有使用数据库,而是使用了midden。你把东西丢进去,然后希望以后再把它挖出来。这是几千年前人们做过的事情(当燧石是最先进的技术时它很受欢迎),虽然它有助于考古学家们通过这些垃圾堆进行挖掘,但我们是软件开发人员,而不是考古学家,我们不是我想要经常做这种事情。

其次,这是一个严重的性能杀手。你要么写一些上帝可怕的静态代码来费力地检查每个表中的每个字段,要么你要编写一些中等亮度的代码来动态地创建一些更加神奇的查询,这将很费力地检查每个字段在每张桌子里。关注这里的词是“费力的”。如果谈到这一点,那就是“太可怕了”。扫描数据库中每个表中的每一行并测试所有行中的每个字段都会很慢。非常非常慢。这将是一个死胡同,在路上的轮胎痕迹在它的壳上缓慢。这不是一件好事,除非你拥有当地电力公司的股票,并希望确保所有生成的电子在你的雇主电脑中都有一个幸福的家。

第三,当人们看到你的代码时,他们会有强烈的情感。那些注定要在管理层工作的人会笑,因为他们知道他们不必维护它或试图解决性能问题。技术上受到挑战的人会哭,因为他们知道他们无法解决问题。真正的Code Warriors会惊讶地凝视片刻,然后咬紧牙关,追捕你,并用仪式的Green-Bar魔杖击败你,因为只有他们知道这种邪恶才能被阻止。

所以考虑一下重新设计。再一次,仅仅因为可以完成某事并不意味着应该完成。

分享并享受。