powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / написание хп, как лучше разрулить ситуацию?
5 сообщений из 5, страница 1 из 1
написание хп, как лучше разрулить ситуацию?
    #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
написание хп, как лучше разрулить ситуацию?
    #38765577
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemarnomenclature_id и item могут быть несколькоВ рамках заявленного типа данных входных параметров это не реализуется.
...
Рейтинг: 0 / 0
написание хп, как лучше разрулить ситуацию?
    #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
написание хп, как лучше разрулить ситуацию?
    #38765700
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemarскрипт не получится сделать?
Да запросто. Но в процедуру надо передавать не чисельные типы, а строковый, в котором перечислены через разделитель все значения (CSV).
А дальше см. http://dev.mysql.com/doc/refman/5.6/en/flow-control-statements.html
Для извлечения одного значения из CSV используйте двойной SUBSTRING_INDEX.
...
Рейтинг: 0 / 0
написание хп, как лучше разрулить ситуацию?
    #38765753
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaGallemarскрипт не получится сделать?
Да запросто. Но в процедуру надо передавать не чисельные типы, а строковый, в котором перечислены через разделитель все значения (CSV).
А дальше см. http://dev.mysql.com/doc/refman/5.6/en/flow-control-statements.html
Для извлечения одного значения из CSV используйте двойной SUBSTRING_INDEX.
спасибо,попробую
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / написание хп, как лучше разрулить ситуацию?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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