【发布时间】:2021-09-25 00:03:19
【问题描述】:
编写一个脚本来创建和调用一个名为 invoice_balance 的存储过程。此存储过程应使用两个变量来存储 (1) Invoices 表中具有到期余额的所有发票的计数和 (2) 所有这些发票的到期余额总和。如果该总余额大于或等于 30,000 美元,则存储过程应显示一个结果集,该结果集显示两个变量的值。否则,该过程应显示一个结果集,该结果集显示如下消息:应付总额低于 30,000 美元。
SELECT sum(dueBalance) FROM invoice
DROP PROCEDURE IF EXISTS test; ;//drop if already test name procedure avilable
DELIMITER //
CREATE PROCEDURE test()
BEGIN
DECLARE countInvoice int; //declaring two variable countInvoice and sumdueBalance
DECLARE sumdueBalance decimal(10,8);
SELECT count(*) into countInvoice //put total count in countInvoice
FROM invoice;
SELECT sum(dueBalance) into sumdueBalance //put sum in sumdueBalance
FROM invoice;
if countprod>=30000 then
select countInvoice , sumdueBalance as col1; //col1 is name for new column
else
select 'Total balance due is less than $30,000.';
end if;
END //
DELIMITER ;
call test()
我编写了这个脚本,但它给了我一个错误 1064。 给定的模式 https://drive.google.com/file/d/1JAeBc2h_5-z7La6nizFgIRDL1pjKDDz2/view?usp=sharing
【问题讨论】:
-
我们可以如何帮助您?
-
错误代码:1064。您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 3 行的“DROP PROCEDURE IF EXISTS test”附近使用正确的语法
-
对不起,先生,但是 MySQL 和 SQL Server 是不同的 RDBMS。您能澄清一下您使用的是哪一个吗
-
我正在使用我的 SQL。
-
这段代码仍然给我错误,我不知道我做错了。这应该给我这样的东西。应付总余额不到 30,000 美元