Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Pl/SQL пустой вывод процедуры / 6 сообщений из 6, страница 1 из 1
02.05.2018, 20:59
    #39639087
demamon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pl/SQL пустой вывод процедуры
Здравствуйте.
Есть 3 таблицы:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
CREATE TABLE "SYSTEM"."ID_DOWNLOADS" 
(   "LOADID" NUMBER NOT NULL ENABLE, 
    "DATELOAD" DATE NOT NULL ENABLE, 
    CONSTRAINT "ID_DOWNLOADS_PK" PRIMARY KEY ("LOADID")
);

CREATE TABLE "SYSTEM"."CAR_BRAND" 
(   "CARBRANDID" NUMBER NOT NULL ENABLE, 
    "BRANDNAME" VARCHAR2(20 BYTE) NOT NULL ENABLE, 
    CONSTRAINT "CAR_BRAND_PK" PRIMARY KEY ("CARBRANDID")
);

CREATE TABLE "SYSTEM"."SALECAR" 
(   "CARBRANDID" NUMBER NOT NULL ENABLE, 
    "CARMODELID" NUMBER NOT NULL ENABLE, 
    "COSTT" NUMBER NOT NULL ENABLE, 
    "SALEDATE" DATE NOT NULL ENABLE, 
    "LOADID" NUMBER
);


Нужно написать процедуру, в которою подается дата. По этой дате нужно с первой таблицы взять loadid и присвоить переменной. Потом по значению этой переменной вывести таблицу в которой будет BRANDNAME и сумма COST по этому бренду.

Я написал следующие
Код: 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.
34.
SET SERVEROUTPUT ON
CREATE OR REPLACE Procedure SummSale ( date_in IN date )
  IS
 no_loadid1 EXCEPTION;
 Loadid1 number;
 TYPE SummSale IS RECORD (
    Brandname   VARCHAR2(30),
    Costt  NUMBER (20)
   );
   summ_sale SummSale;
 begin
 SELECT loadid INTO loadid1 from id_downloads where dateload = date_in;
 IF loadid1 = NULL THEN
    RAISE no_loadid1;
 ELSE
   DBMS_OUTPUT.PUT_LINE(loadid1);
   SELECT Br.BRANDNAME, SUM(Sc.COSTT) AS COSTT INTO Summ_Sale.Brandname, Summ_Sale.Costt 
   FROM CAR_BRAND Br INNER JOIN SALECAR Sc ON Br.CARBRANDID = Sc.CARMODELID 
   WHERE (((loadid1) = Sc.loadid)) GROUP BY Br.Brandname; 
   DBMS_OUTPUT.PUT_LINE('Brandname:   ' || Summ_Sale.Brandname);
   DBMS_OUTPUT.PUT_LINE('Cost:   ' || Summ_Sale.Costt);
 END if;
 exception
 WHEN no_loadid1 THEN
 raise_application_error (-20001,'load id not found in order to submit.');
 END SummSale;
 /
show errors
 declare
 date1 date;
 begin
 date1:=28/01/2018;
 SummSale(date1); 
 end;


Проблема в том что процедура компилируется но вывод при этом пустой. Сначала я подозревал не работающий селект, но при выводе loadid1 то же пусто, а на него обработчик стоит.
...
Рейтинг: 0 / 0
02.05.2018, 21:49
    #39639093
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pl/SQL пустой вывод процедуры
вывод при этом пустой

Не подтверждаю.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
SQL>  declare
  2   date1 date;
  3   begin
  4   date1:=to_date('28/01/2018', 'dd/mm/yyyy');
  5   SummSale(date1);
  6   end;
  7  /

declare
 date1 date;
 begin
 date1:=to_date('28/01/2018', 'dd/mm/yyyy');
 SummSale(date1);
 end;

ORA-01403: данные не найдены
ORA-06512: на  "SYSTEM.SUMMSALE", line 11
ORA-06512: на  line 5
...
Рейтинг: 0 / 0
02.05.2018, 22:05
    #39639095
demamon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pl/SQL пустой вывод процедуры
dmdmdm,

Да, время не правильно передавал.
Теперь выдает not a GROUP BY expression
...
Рейтинг: 0 / 0
03.05.2018, 09:21
    #39639184
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pl/SQL пустой вывод процедуры
demamon,

А какой смысл закладывался в эту бессмысленную конструкцию?
Код: plsql
1.
IF loadid1 = NULL THEN
...
Рейтинг: 0 / 0
03.05.2018, 11:48
    #39639269
MaximaXXL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pl/SQL пустой вывод процедуры
demamon,

И попробуйте заложиться на:

Код: plsql
1.
ORA-01422: exact fetch returns more than requested number of rows ORA-06512
...
Рейтинг: 0 / 0
03.05.2018, 13:15
    #39639365
merch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pl/SQL пустой вывод процедуры
demamon, почему в SYSTEM?
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Pl/SQL пустой вывод процедуры / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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