Оператор SQL игнорируется - PullRequest
0 голосов
/ 30 мая 2018

Я хочу написать процедуру, которая принимает две даты в качестве входных данных (продолжительность) и обновляет сумму комиссии за каждый еженедельный отчет, для которого начальная дата подпадает под эту продолжительность.Сумма комиссии является результатом умножения суммы продажи и ставки комиссии (%).

    CREATE OR REPLACE PROCEDURE updateweekly_sales_report
(p_start IN WEEKLY_SALES_REPORT.StartDate%TYPE, p_end IN 
weekly_sales_report.EndDate%TYPE)
IS
BEGIN
UPDATE WEEKLY_SALES_REPORT SET ComAmount = SaleAmount*ComRate where 
(StartDate-EndDate) = (p_start- p_end);
SELECT concat('The commission amount for report ',ReportID,' has been updated 
to ',ComAmount,' dollars, 
which is',ComRate,'% of the total sale amount of ',SaleAmount,' dollars.')
COMMIT;
END;
/
BEGIN
   updateweekly_sales_report('2018-04-02','2018-04-08');
END;
/

У меня две ошибки LINE / COL ERROR


6/1 PL / SQL: Оператор SQL игнорируется 6/8 PL / SQL: ORA-00909: недопустимое количество аргументов

1 Ответ

0 голосов
/ 30 мая 2018

'2018-04-02' и '2018-04-08' - это строки символов, а не даты.Чтобы передать действительный тип DATE, вам нужно использовать функцию TO_DATE для преобразования строк в даты:

BEGIN
  updateweekly_sales_report(TO_DATE('2018-04-02', 'YYYY-MM-DD'),
                            TO_DATE('2018-04-08', 'YYYY-MM-DD'));
END;

Или вы можете использовать литерал даты:

BEGIN
  update_weekly_sales_report(DATE '2018-04-02',
                             DATE '2018-04-08');
END;

Удачи.

...