Это логическое использование хранимых процедур MySQL? - PullRequest
1 голос
/ 27 августа 2009

У меня есть клиент с размещенной базой данных 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;

1 Ответ

5 голосов
/ 27 августа 2009

Для такой простой процедуры, как это, я бы сказал, что это громкое нет. Существуют более эффективные способы достижения объекта этой конкретной процедуры сохранения, например, с помощью его предопределения в файле конфигурации и / или сохранения в виде объекта массива с уже имеющимися определениями.

Лично я реализую хранимые процедуры, когда существует сложный набор инструкций, которые должны выполняться в бэкэнде, в частности, манипулируя большими объемами данных в разных таблицах. Преимущество состоит в том, что у вас не слишком много циклических переходов и подключений к базе данных, чтобы минимизировать издержки, которые вы могли бы испытать в противном случае.

Я обнаружил, что иногда я использую хранимые процедуры для определения бизнес-логики, чтобы инкапсулировать сложные детали или внутреннюю работу, скажем, внешнего разработчика. Еще одним преимуществом является то, что если вы правильно проектируете свою систему, использование хранимых процедур может сделать вашу систему гораздо более масштабируемой, чем вы думаете.

Это особенно помогает, когда вы занимаетесь разработкой в ​​разных средах, таких как разработка от QA до UAT. Если вам нужно где-то изменить строку кода в службе, вы должны удалить ее и повторно развернуть, чтобы изменения вступили в силу, что, конечно, может вызвать много сбоев. С процедурами магазина вы можете просто изменить его, и вы на своем пути. Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...