gpt4 book ai didi

mysql - 这是 MySQL 存储过程的合理使用吗?

转载 作者:行者123 更新时间:2023-11-29 04:31:39 24 4
gpt4 key购买 nike

我有一个拥有托管 MySQL 数据库的客户,其开发人员一直要求我添加非常简单的存储过程。我查看了这样的存储过程,但我看不出有任何理由将其实现为存储过程而不是在应用程序代码中实现。我是否正确认为这真的是存储过程的奇怪用法?

CREATE DEFINER = 'username'@'%' PROCEDURE `sp_get_payrollgl`(IN pi_glcode TEXT)
DETERMINISTIC
CONTAINS SQL
SQL SECURITY INVOKER
COMMENT ''
BEGIN

if (pi_glcode is null || pi_glcode = '') then
select glcode,descr,
case when crdb = 1 then 'CR' else 'DB' end as 'crdb',
case when taxable = 1 then 'Yes' else 'No' end as 'taxable',
case when billable = 1 then 'Yes' else 'No' end as 'billable',
case when active = 1 then 'Yes' else 'No' end as 'active'
from payrollgl;
else
select glcode,descr,
case when crdb = 1 then 'CR' else 'DB' end as 'crdb',
case when taxable = 1 then 'Yes' else 'No' end as 'taxable',
case when billable = 1 then 'Yes' else 'No' end as 'billable',
case when active = 1 then 'Yes' else 'No' end as 'active'
from payrollgl where glcode = pi_glcode;
end if;
END;

最佳答案

对于这样一个简单的例程,我会说这是一个响亮的否定。有更好的方法可以实现此特定存储过程的目标,例如,将其预定义在配置文件中和/或将其存储为数组对象,其中定义已经到位。

当后端需要执行一组复杂的指令时,我个人会实现存储过程,特别是跨不同表处理大量数据。这样做的好处显然是您不需要太多往返和与数据库的连接,从而最大限度地减少否则会遇到的开销。

我发现有时我使用存储过程来定义业务逻辑来封装复杂的细节或来自前端开发人员的内部工作。另一个好处是,如果您正确地设计了系统,使用存储过程可以使您的系统比您想象的更具可扩展性。

当您跨不同环境(例如开发到 QA 再到 UAT)进行开发时,它尤其有用。如果您必须在某个地方更改服务中的一行代码,您可以将其删除并重新部署以使更改生效,这当然会导致很多中断。使用商店程序,您可以简单地更改它,然后就可以了。祝你好运!

关于mysql - 这是 MySQL 存储过程的合理使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1341391/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com