【发布时间】:2018-05-29 21:07:28
【问题描述】:
我想编写一个程序,将两个日期作为输入(一个持续时间)并更新开始日期在此持续时间范围内的每个周报告的佣金金额。佣金金额是销售额和佣金率(%)相乘的结果。
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:参数数量无效
【问题讨论】:
-
孤独的
SELECT concat...(没有目标也没有尾随;)应该做什么?而且您知道WHERE (StartDate-EndDate) = (p_start- p_end)将匹配日期的 difference 相等的所有行(这应该是全部,如果您没有所有周的天数不同.. .)? -
您使用的是什么类型的数据库? (Oracle、sqlServer 等)
标签: sql oracle stored-procedures plsql sqlplus