Что не так с моей процедурой sql - PullRequest
0 голосов
/ 29 мая 2018

моя процедура похожа на приведенную ниже;

CREATE OR REPLACE PROCEDURE updateWEEK_SALES_REPORTS

(   p_start IN WEEK_SALES_REPORT.StartDate%TYPE,
     p_end IN weekly_sales_report.EndDate%TYPE)

IS

BEGIN


 UPDATE WEEK_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;

/

, но отображаются ошибки

7/3 PL / SQL: оператор SQL игнорируется

7/10 PL / SQL: ORA-00909: неверное количество аргументов

Ответы [ 2 ]

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

Я почти уверен, что вы пытаетесь напечатать ваше сообщение на консоли.Для этого вы хотите dbms_output.

CREATE OR REPLACE PROCEDURE updateWEEK_SALES_REPORTS
(   p_start IN date,
     p_end IN date)
IS

BEGIN

 UPDATE WEEK_SALES_REPORT SET ComAmount = SaleAmount*ComRate WHERE (StartDate-EndDate) = (p_start-p_end);

 dbms_output.put_line('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;
0 голосов
/ 29 мая 2018

Да, @Jacob H прав, CONCAT принимает только 2 параметра.Вместо этого используйте ||, что намного хуже, чем ваша версия, однако:

SELECT 'The commission amount for report ' || ReportID ||
       ' has been updated to ' || ComAmount || ' dollars, which is' ||
        ComRate || '% of the total sale amount of ' || SaleAmount ||
       ' dollars.' ...

Более того, вам нужно SELECT it INTO для некоторой переменной, например, fi

SELECT ... INTO myvar FROM DUAL; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...