【发布时间】:2019-09-09 03:02:00
【问题描述】:
我正在尝试在 Mysql 中创建一个过程,但在第 12 行出现错误。
它说:
数据库更改查询正常,0 行受影响,1 个警告(0.00 秒)
ERROR 1064 (42000):您的 SQL 语法有错误;检查 与您的 MySQL 服务器版本相对应的手册 'declare required_date date default 附近使用的语法 cast('0001-01-01' 作为日期); 在第 12 行声明 错误 1305 (42000):PROCEDURE classicmodels.getInfo 不存在 +---------+ | @结果 | +---------+ |空 | +---------+ 1 行(0.00 秒)
我的代码:
use classicmodels;
delimiter $$
drop procedure if exists `getInfo` $$
create procedure getInfo(in customer_number int(11), in order_number int(11))
begin
if order_number = 0 and customer_number != 0 THEN
select orders.orderDate, orders.requiredDate, orders.shippedDate from orders
inner join customers on customers.customerNumber = orders.customerNumber
where customers.customerNumber = customer_number;
elseif order_number != 0 and customer_number = 0 THEN
select orders.orderDate, orders.requiredDate, orders.shippedDate from orders
where orders.orderNumber = order_number;
ELSEIF order_number != 0 and customer_number != 0 THEN
declare required_date date default cast('0001-01-01' as date);
declare shipped_date date default cast('9999-01-01' as date);
select requiredDate into required_date, shippedDate into shippedDate from orders
inner join customers on customers.customerNumber = orders.customerNumber
where customers.customerNumber = customer_number and orders.orderNumber = order_number;
if required_date = shipped_date then
select "dap ung tot";
else
select "dap ung khong tot";
end if;
end if;
end $$
delimiter ;
call getInfo(353,10121);
select @result;
-- C:\Program Files\MySQL\MySQL Server 8.0\bin
【问题讨论】:
-
从非工作代码逆向工程你的意图是棘手的。