【发布时间】:2011-01-07 21:43:33
【问题描述】:
我现在正在研究存储过程。
根据mysql网站dev部分的this文章(第8页)...
通常情况下,放 存储中的 SELECT 语句 程序,这是为了说明。 我决定一些程序应该 只需从我们的表中选择,这样 当您调用该程序时,它将是 很明显它正在工作。
这是为什么呢?
使用存储过程来简化复杂的选择语句不是“最佳实践”吗?
在哪些特定情况下使用存储过程是有益的?例子?
【问题讨论】:
我现在正在研究存储过程。
根据mysql网站dev部分的this文章(第8页)...
通常情况下,放 存储中的 SELECT 语句 程序,这是为了说明。 我决定一些程序应该 只需从我们的表中选择,这样 当您调用该程序时,它将是 很明显它正在工作。
这是为什么呢?
使用存储过程来简化复杂的选择语句不是“最佳实践”吗?
在哪些特定情况下使用存储过程是有益的?例子?
【问题讨论】:
通常存储过程用于数据库中的复杂处理。关于它们的好处存在激烈的争论。我从未见过存储过程中的 SELECT 是一件坏事,但我也不希望必须编写的每条 SQL 语句都进入存储过程。它应该保留给那些涉及多个语句并且必须重复执行的处理。
Jeff 对他们大发雷霆here。
为了回答您对具体示例的直接问题,我发现由于可移植性问题而避免使用它们。我试图做我所有的处理应用程序方面。同时,我不必担心应用程序中的网络带宽,因此每种情况都不同。
【讨论】:
使用存储过程/例程的一个特定情况是它可以提供类似于 OO 范例中函数的参数错误检查。它增加了“封装”
一个简单的例子:
CREATE PROCEDURE select_table(IN @id INT)
BEGIN
IF @id < O THEN
-- ERROR! do something here
ELSEIF
SELECT * from TABLE WHERE id = @id;
END IF
END
【讨论】: