我想写一个过程,它接受两个日期作为输入(一个持续时间),并更新开始日期在此持续时间内的每个每周报告的佣金金额。佣金金额是销售额与佣金率(%)的乘积。
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;
/
我有两个错误行/列错误
6/1 PL/ SQL : SQL语句已忽略6/8 PL/SQL: ORA-00909:无效的参数数量
发布于 2018-05-30 07:28:25
'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;
祝你好运。
https://stackoverflow.com/questions/50592959
复制相似问题