为什么我总是在mySQL中输出为空?
问题描述:
在这段代码中,它总是输出NULL(尽管他们有数据,但没有任何数据)。我试图从2表(customer和order_status)获取id_cust,lastName,addRess。谁能帮我?即时通讯新的SQL。为什么我总是在mySQL中输出为空?
delimiter //
#drop procedure if exists GetOrderStatus
create procedure GetOrderStatus(IN id_cust INT,
OUT lastName VARCHAR(45),
OUT o_number INT,
OUT addRess VARCHAR(45))
begin
declare id_cust INT;
declare lastName VARCHAR(45);
declare addRess VARCHAR(45);
declare ci_ty VARCHAR(45);
declare dscrption VARCHAR(45);
declare o_number INT;
declare order_stts VARCHAR(45);
declare total_item INT;
declare reMarks VARCHAR(45);
declare curs cursor for
select c.c_id,o.order_no,o.o_status,o.item_total,c.description,o.remarks,c.lname
from order_status o, customer c;
open curs;
fetch curs into id_cust,o_number,order_stts,total_item,dscrption,reMarks,lastName;
select id_cust,lastName,addRess from customer
where id_cust > 2
and customer.id_cust = order_status.id_cust;
end
答
create procedure GetOrderStatus(IN id_cust INT,
OUT olastName VARCHAR(45),
OUT out_number INT,
OUT oaddRess VARCHAR(45))
begin
select c.c_id, c.lname, c.address
INTO id_cust, olastName, oaddRess from customer AS c
JOIN order_status AS o -- JOIN the customers and orders table together based on cust num
ON c.id_cust = o.id_cust
where c.c_id=id_cust;
end
我觉得你的路要走。根本不需要使用游标,只需根据客户ID在两个表之间进行简单的JOIN即可。我猜你在客户表中有一个地址字段,这就是为什么你会看到@addRess=c.address
我猜这个函数应该根据订单号得到订单状态。另外,对于输出参数,不需要声明单独的变量来存储它们。简单地将它们存储在输出变量传递`@ nameOfOutputVariable = someValue中
让我知道这是没有意义的,
肖恩
你为什么putthe字“输出”在@address VARCHAR(45 )输出?请给我解释.. – 2014-09-11 04:53:02
为什么sql说我在线1上有错误代码1064,它是“创建过程GetOrderStatus(@id_cust INT,...” – 2014-09-11 06:18:23
对不起,我以为你使用的是T_SQL,但是你正在使用MySQL。我已经适当地修改了SQL。 – 2014-09-11 13:45:44