powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Sql oracle Ввод нескольких товаров в один заказ - Oracle
6 сообщений из 6, страница 1 из 1
Sql oracle Ввод нескольких товаров в один заказ - Oracle
    #39364506
Аня1705
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня есть таблица Товар(код, название,...) и Продажа(код_продажа, код_товар, ...). Мне надо написать процедуру, добавления товара в продажу, но в одной продаже может участвовать несколько позиций товара, т.е. заполнение таблицы может быть примерно таким (111,1123,..)
(111,1156,..) и т.д.
У меня получается это реализовать только с помощью двух разных процедур. Можно ли это совместить в одной?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
/*Добавляем товар и создаем продажу*/
CREATE OR REPLACE PROCEDURE prodaji_INSERT_WITHOUT
    (NAME_TOV VARCHAR2,CENA_PRODAJI INTEGER, KOLICHESTVO_TOV INTEGER)
    IS
    TOVAR INTEGER;
    USLUGA INTEGER;
    BEGIN
    SELECT KOD INTO TOVAR FROM TOVAR1
    WHERE NAZVANIE = NAME_TOV AND CENA_PRODAJ=CENA_PRODAJI;
    INSERT INTO PRODAJA1 (KOD_PRODAJA,KOD_TOVAR,KOLICHESTVO) VALUES (ID_PRODAJA.NEXTVAL,TOVAR,KOLICHESTVO_TOV);
    DBMS_OUTPUT.PUT_LINE('Товар добавлен');
END;
 
 
/*дополняем существующую продажу*/
CREATE OR REPLACE PROCEDURE prodaji_INSERT_DOPOLNIT_W
    (NAME_TOV VARCHAR2,CENA_PRODAJI INTEGER,KOLICHESTVO_TOV INTEGER)
    IS
    TOVAR INTEGER;
    PROVERKA INTEGER;
    prodaja INTEGER;
    BEGIN
    SELECT KOD INTO TOVAR FROM TOVAR1
    WHERE NAZVANIE = NAME_TOV AND CENA_PRODAJ=CENA_PRODAJI;
    SELECT MAX(KOD_PRODAJA) INTO prodaja FROM PRODAJA1;
    SELECT COUNT(*) INTO PROVERKA FROM PRODAJA1
    WHERE KOD_TOVAR=TOVAR AND KOLICHESTVO=KOLICHESTVO_TOV AND KOD_PRODAJA = prodaja;
    IF PROVERKA>0 THEN BEGIN
    DBMS_OUTPUT.PUT_LINE('Этот товар уже есть'||PROVERKA);RETURN;
    END;END IF;
    INSERT INTO PRODAJA1 (KOD_PRODAJA,KOD_TOVAR,KOLICHESTVO) VALUES (ID_PRODAJA.CURRVal,TOVAR,KOLICHESTVO_TOV);
    DBMS_OUTPUT.PUT_LINE('Товар добавлен');
END;
...
Рейтинг: 0 / 0
Sql oracle Ввод нескольких товаров в один заказ - Oracle
    #39364552
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аня1705,

Передавайте в процедуру параметр типа varray.
...
Рейтинг: 0 / 0
Sql oracle Ввод нескольких товаров в один заказ - Oracle
    #39365906
SirYouGin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно если передавать в процедуру id-продажи и возвращать из процедуры id-продажи.

id := add_tovar_to_prodaja( null, 'Яблоко', 50, 1); --Первый вызов -- создаем новую продажу, т.к. id продажи не заполнен и и добавляем в нее яблоки

id := add_tovar_to_prodaja(id, 'Груши', 100, 2); -- Второй вызов -- добавляем груши в продажу с заданным id
...
Рейтинг: 0 / 0
Sql oracle Ввод нескольких товаров в один заказ - Oracle
    #39365928
Аня1705
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SirYouGin, спасиииибо) хоть один адекватный человек на этом форуме
...
Рейтинг: 0 / 0
Sql oracle Ввод нескольких товаров в один заказ - Oracle
    #39365939
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аня1705,

Использовать более адекватное решение от Alexander Ryndin было слишком сложно?
...
Рейтинг: 0 / 0
Sql oracle Ввод нескольких товаров в один заказ - Oracle
    #39365978
Аня1705
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env, я пробовала с этим разобраться, но как использовать в моем случае не поняла и никаких примеров не нашла
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Sql oracle Ввод нескольких товаров в один заказ - Oracle
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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