【发布时间】:2008-11-15 18:33:34
【问题描述】:
根据他们的工作,您如何区分优秀的 SQL 开发人员?
示例可能包括:
很少使用 CURSOR,并尝试将它们重构掉。
很少使用临时表,并尝试将它们重构掉。
自信地处理 OUTER JOIN 中的 NULL 值。
避免未广泛实施的 SQL 扩展。
知道如何优雅地缩进。
【问题讨论】:
-
是否有人请澄清评论“很少使用 CURSOR,并试图将它们重构掉。”?我在一个中型 HR 系统上工作,并且在对几千到几万条记录进行批量更新时,经常使用游标。如果不使用游标,这将如何完成?
-
您能否举一个您当前使用光标的业务流程操作示例?
-
业务部门 103 的 2000 名员工于 2012 年 3 月 1 日采取终止行动。我想在 2012 年 3 月 2 日为这些员工添加雇用操作并更新他们的工资记录。每个员工的最高记录中的一些字段将被转移到新的操作和记录中。我如何在没有光标的情况下获取这些员工行为和支付记录?如果有帮助,该系统会模仿 Peoplesoft 系统。
-
你不会自然而然地做类似 SELECT fields FROM terminates WHERE business_unit = '103' AND action_date = '01-MAR-2012' 之类的事情吗?然后用它来构造“INSERT INTOhire_actions (fields....) SELECT etc.” (根据需要添加连接和表达式?对于支付记录,从最高记录中选择以构造 INSERT 和 UPDATE 语句?即使使用游标,您也可能需要做大致相同的事情。只需对其进行集合操作即可在一份声明中处理所有员工。
-
啊。我懂了。建议将所有代码放在一条 SQL 语句中。对于简单的更新可能没问题,但对于需要更复杂逻辑的程序,这可能会使 SQL 变得非常笨拙且难以排除故障。让我想回去检查我的旧程序。当我有时间时,我想我会去看看其中一些是否可以优化。感谢您的澄清。
标签: sql