Доброго всем времени суток. столкнулся вот с такой проблемой, написал вроде бы все верно, но не работает. Если же в теле функции работаю со всеми входящими параметрами как с глобальными (например @manager_email_in | Код | SELECT count(jccrm_managers.manager_email) FROM jccrm_managers WHERE jccrm_managers.manager_email = @manager_email_in INTO manager_count_local; RETURN manager_count_local; |
), то все ок , тоесть данная "урезаная" функция вернет количество найденных записей. самое интересное что функции без параметров работают нормально, но при этом не работает ни одна из функций с параметрами. собственно вопрос либо где у меня ошибка в ДНК  либо может быть здесь что то другое (может сервер админы не до собирали например ? при том что смотрел в других базах функции и процедуры написанн также, без изврашений с глобальными переменными) вот оригинал | Код | CREATE DEFINER = 'root'@'%' FUNCTION `jccrm_manager_add`(manager_fio_in VARCHAR(100), manager_email_in VARCHAR(255), manager_password_in VARCHAR(255), manager_phone_in CHAR(10)) RETURNS int(11) NOT DETERMINISTIC SQL SECURITY DEFINER COMMENT 'add new maneger to db' BEGIN DECLARE manager_count_local int; DECLARE credit_account_number_local char(10); DECLARE current_personal_account_local int; DECLARE current_credit_account_local int; DECLARE manager_id_local int;
SELECT count(jccrm_managers.manager_email) INTO manager_count_local FROM jccrm_managers WHERE jccrm_managers.manager_email = manager_email_in;
IF (manager_count_local > 0) THEN RETURN 1; ELSE SELECT jccrm_generate_number() INTO credit_account_number_local;
INSERT jccrm_personal_account SET credit_account_number = credit_account_number_local, credit_account_sum= 0; INSERT INTO current_personal_account_local VALUES (LAST_INSERT_ID());
INSERT jccrm_credit_account SET credit_account_number =credit_account_number_local, credit_account_sum= 0;
INSERT INTO current_credit_account_local VALUES (LAST_INSERT_ID());
INSERT INTO jccrm_managers SET bonus_account_id =0, personal_account_id= current_personal_account_local, credit_account_id =current_credit_account_local, manager_email = manager_email_in, manager_password = PASSWORD(manager_password_in), manager_fio =manager_fio_in, manager_create_date = NOW(), manager_archive_date=NULL, manager_phone = manager_phone_in;
INSERT INTO manager_id_local VALUES (LAST_INSERT_ID()); RETURN manager_id_local; END IF; END;
|
|