0 / 0 / 0
Регистрация: 12.12.2019
Сообщений: 3
1

Проблемы с созданием процедуры

12.12.2019, 11:06. Показов 934. Ответов 3
Метки нет (Все метки)

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

Не могу понять как сравнить с датой которая в другой таблице, пишет ошибку
exact fetch returns more than requested number of rows
почитал форум но не понял как в моем случае исправить это


Oracle 11 SQL
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
CREATE OR REPLACE PROCEDURE LAB4proc(dname IN detail.name%TYPE) IS
    
    customer INT;
    
    CURSOR get_detail(dname detail.name%TYPE) IS
                SELECT d.detail_key,d.name,SUM(t.VALUES_MANUFACTURES) AS valuee
                FROM detail d join TM t ON
                d.detail_key=t.detail_key join orders o ON o.order_key=t.order_key
                WHERE name = dname 
                GROUP BY d.detail_key,d.name;
                
            
BEGIN
 
                SELECT t.detail_key INTO customer
                FROM TM t join orders o ON t.order_key=o.order_key 
                WHERE order_date BETWEEN '01.01.2019' AND '12.31.2019';
 
        FOR in_det IN get_detail(dname)
        LOOP
        IF in_det.detail_key = customer THEN
          DBMS_OUTPUT.put_line(in_det.name ||' общее количество - '|| TO_CHAR(in_det.valuee));
           -- DELETE FROM detail WHERE detail_key = in_det.detail_key;
      END IF;
   
     END LOOP;
     
END;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.12.2019, 11:06
Ответы с готовыми решениями:

Проблемы с созданием объектов
Описан класс TPlanet: TPlanet = class (TObject) public name: string; ...

Проблемы с созданием класса
class Source { Source(String login,String password,String other) { ...

Проблемы с созданием Ln логарифма
Всем привет, прошу прощения что пишу вам с такой просьбой, помочь сделать программу для решения Ln...

Проблемы с созданием словаря на C++
Ребята-программисты, нужна срочная помощь, выдаёт такие ошибки: E0291 для класса "Term" не...

3
Модератор
4214 / 3054 / 582
Регистрация: 21.01.2011
Сообщений: 13,205
12.12.2019, 12:25 2
Цитата Сообщение от soullnik Посмотреть сообщение
Не могу понять как сравнить с датой которая в другой таблице, пишет ошибку
exact fetch returns more than requested number of rows
Цитата Сообщение от soullnik Посмотреть сообщение
SELECT t.detail_key into customer
То, что дата в другой таблице, здесь не влияет.
Конструкция SELECT ... INTO предполагает возврат только одной строки. Если возвращается больше, то и получаешь ORA-01422
1
0 / 0 / 0
Регистрация: 12.12.2019
Сообщений: 3
12.12.2019, 12:50  [ТС] 3
Понял, не могли бы подсказать каким образом можно сравнить значения курсора с датой чтобы процедура заработала?
0
Модератор
4214 / 3054 / 582
Регистрация: 21.01.2011
Сообщений: 13,205
12.12.2019, 13:05 4
Цитата Сообщение от soullnik Посмотреть сообщение
каким образом
Отсутствие заказов - это COUNT(*) = 0. А COUNT - это всегда одно значение (если без GROUP BY).
0
12.12.2019, 13:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.12.2019, 13:05
Помогаю со студенческими работами здесь

Проблемы с созданием объекта
Есть два класса public class Tname { public string name_eng; public...

Проблемы с созданием файла инициализации
Добрый день. Возникла следующая проблема с созданием файла инициализации. Файл который должен...

Есть проблемы с созданием программы в с
Нужно создать программу, которая позволяет ввести английскую букву и вывести какая это буква,...

Проблемы с созданием сущностей и ключей
Во время создание в PgAdmin ругается на длину переменных. Ссылку на диаграму ERD прилагаю:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru