Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / написание хп, как лучше разрулить ситуацию? / 5 сообщений из 5, страница 1 из 1
03.10.2014, 06:25:23
    #38765554
Gallemar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
написание хп, как лучше разрулить ситуацию?
Добрый день
Попросили в чужом софте написать процедуру для оптимизации добавления данных с разными параметрами:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE DEFINER = 'root'@'localhost' PROCEDURE `proc`(
        IN `nomenclature_id` INTEGER(11),
        IN `discount_type` BIGINT(20),
        IN `item` VARCHAR(40)
    )
    NOT DETERMINISTIC
    CONTAINS SQL
    SQL SECURITY DEFINER
    COMMENT ''
BEGIN
INSERT INTO `ukmserver`.`trm_in_disc_std_items_n_plus_m` (`nomenclature_id`, `item`, `discount_type`, `quantity_paid`, `quantity_without_paid`, `modificator`, `version`, `deleted`)
 VALUES ('nomenclature_id', 'item', 'discount_type', '0.0000', '1.0000', '-0%', '0', '0');
END;

Фишка в чем - nomenclature_id и item могут быть несколько,как мне лучше сделать в процедуре чтобы при введении нескольких nomenclature_id и item сделать цикл по этим данным?

Т.е. есть данные nomenclature_id = 1, а item = '07889','100974','59538','72761', как item в процедуру добавить несколько значений, что то типа in ('07889','100974','59538','72761') ?
...
Рейтинг: 0 / 0
03.10.2014, 08:42:46
    #38765577
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
написание хп, как лучше разрулить ситуацию?
Gallemarnomenclature_id и item могут быть несколькоВ рамках заявленного типа данных входных параметров это не реализуется.
...
Рейтинг: 0 / 0
03.10.2014, 08:49:13
    #38765581
Gallemar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
написание хп, как лучше разрулить ситуацию?
Akina,и просто скрипт не получится сделать? пока делаем так:


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SET @nomenclature_id = 1;
SET @discount_type = 121;

SET @item1 = '07889';
SET @item2 = '100974';
SET @item3 = '59538';
SET @item4 = '72761';

INSERT INTO `ukmserver`.`trm_in_disc_std_items_n_plus_m` (`nomenclature_id`, `item`, `discount_type`, `quantity_paid`, `quantity_without_paid`, `modificator`, `version`, `deleted`) VALUES (@nomenclature_id, @item1, @discount_type, '0.0000', '1.0000', '-0%', '0', '0');
INSERT INTO `ukmserver`.`trm_in_disc_std_items_n_plus_m` (`nomenclature_id`, `item`, `discount_type`, `quantity_paid`, `quantity_without_paid`, `modificator`, `version`, `deleted`) VALUES (@nomenclature_id, @item2, @discount_type, '0.0000', '1.0000', '-0%', '0', '0');
INSERT INTO `ukmserver`.`trm_in_disc_std_items_n_plus_m` (`nomenclature_id`, `item`, `discount_type`, `quantity_paid`, `quantity_without_paid`, `modificator`, `version`, `deleted`) VALUES (@nomenclature_id, @item3, @discount_type, '0.0000', '1.0000', '-0%', '0', '0');
INSERT INTO `ukmserver`.`trm_in_disc_std_items_n_plus_m` (`nomenclature_id`, `item`, `discount_type`, `quantity_paid`, `quantity_without_paid`, `modificator`, `version`, `deleted`) VALUES (@nomenclature_id, @item4, @discount_type, '0.0000', '1.0000', '-0%', '0', '0');
...
Рейтинг: 0 / 0
03.10.2014, 10:42:45
    #38765700
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
написание хп, как лучше разрулить ситуацию?
Gallemarскрипт не получится сделать?
Да запросто. Но в процедуру надо передавать не чисельные типы, а строковый, в котором перечислены через разделитель все значения (CSV).
А дальше см. http://dev.mysql.com/doc/refman/5.6/en/flow-control-statements.html
Для извлечения одного значения из CSV используйте двойной SUBSTRING_INDEX.
...
Рейтинг: 0 / 0
03.10.2014, 11:10:50
    #38765753
Gallemar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
написание хп, как лучше разрулить ситуацию?
AkinaGallemarскрипт не получится сделать?
Да запросто. Но в процедуру надо передавать не чисельные типы, а строковый, в котором перечислены через разделитель все значения (CSV).
А дальше см. http://dev.mysql.com/doc/refman/5.6/en/flow-control-statements.html
Для извлечения одного значения из CSV используйте двойной SUBSTRING_INDEX.
спасибо,попробую
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / написание хп, как лучше разрулить ситуацию? / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]