【问题标题】:Write a script that creates and calls a stored procedure named invoice_balance编写一个脚本,创建并调用一个名为 invoice_balance 的存储过程
【发布时间】: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 美元

标签: mysql stored-procedures


【解决方案1】:

我记得你的脚本中有 sql 语法错误,而这部分的选择不是它在 mysql 中的假设。

SELECT count(*) into countInvoice 可以在mysql中重写:

insert into countInvoice
select count(*) from invoice;

【讨论】:

    猜你喜欢
    • 2019-09-07
    • 1970-01-01
    • 2014-09-17
    • 1970-01-01
    • 2023-03-30
    • 2013-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多