使用字符串生成器或存储过程选择单行

时间:2012-11-12 11:52:31

标签: java sql jdbc plsql

我的应用程序中有很多单行选择查询,多个连接跨越5-6个表。这些查询是基于许多条件生成的,这些条件基于使用String Builders从表单等输入。然而,我的团队负责人恰好是一名sql开发人员,他要求我将这些单行查询转换为存储过程。

将单行选择查询转换为后端并执行所有if和else作为SP是否有任何优势。

3 个答案:

答案 0 :(得分:2)

将所有sql部分放在存储过程中的一个优点是,您可以将查询保存在一个数据库的位置,这样在不对应用程序层或前端层进行大量更改的情况下更改或修改将更加容易。

除了DBA或SQL开发人员可以微调SQL,如果它存储在数据库过程中。您可以将所有函数/存储过程保存在一个包中,这在性能和组织对象方面会更好(类似于在Java中创建包的方式)。当然,在软件包中,您可以限制对其对象的直接访问。

这更多的是团队或部门政策,无论是在前端还是在数据库本身中保留sql部分,当然像@Gimby提到的那样,很多人可能会有不同的观点。

更新1

如果你有一个select语句返回一些东西使用一个函数,如果你有INSERT / UPDATE / DELETE或类似的东西,如发送电子邮件或其他业务规则,那么使用一个过程,并通过传递参数从前端调用这些。

答案 1 :(得分:0)

我担心这个问题会根据许多不同的个人观点产生许多不同的答案。

在任何情况下,你在这里讨论它的业务逻辑,我认为属于应用层。但我知道整个Oracle开发者俱乐部全心全意地不同意我。

答案 2 :(得分:0)

如果你在java中使用PreparedStatement那么性能之间没有很大差异 java查询和存储过程。 (如果你在java中使用Statement,那你就有问题)。

但是存储过程是组织和重用sql代码的好方法。你可以将它们分组,你可以在没有java编译的情况下更改它们,你的DBA或SQL专家可以调整它们。