Mysql游标无法获取数据

Mysql游标无法获取数据,mysql,cursor,Mysql,Cursor,我正在创建使用游标获取乘客姓名和PNR号码数据的过程,代码如下: mysql> create procedure GetName(out PNR_No varchar(20), out Name varchar(20)) -> begin -> declare PNR varchar(20); -> declare Names varchar(20); -> declare finished int default 0; -&

我正在创建使用游标获取乘客姓名和PNR号码数据的过程,代码如下:

mysql> create procedure GetName(out PNR_No varchar(20), out Name varchar(20))
    -> begin
    -> declare PNR varchar(20);
    -> declare Names varchar(20);
    -> declare finished int default 0;
    -> declare c1 cursor for select T.PNRNo, P.Name
    -> from Passenger P, Ticket T
    -> where P.PPNO=T.PPNO;
    -> declare continue handler for not found set finished=1;
    -> open c1;
    -> get_Names: loop
    -> fetch c1 into PNR, Names;
    -> if finished=1 then
    -> leave get_Names;
    -> end if;
    -> set PNR_No=concat(PNR,";",PNR_No);
    -> set Name=concat(Names,";",Name);
    -> end loop get_Names;
    -> close c1;
    -> end/
但当我调用程序时:

mysql> call GetName(@PNR_No,@Name);
    -> /
Query OK, 0 rows affected (0.07 sec)

mysql> select @PNR_No,@Name;
    -> /
+---------+-------+
| @PNR_No | @Name |
+---------+-------+
| NULL    | NULL  |
但当我执行查询时:

mysql> select T.PNRNo, P.Name
            -> from Passenger P, Ticket T
            -> where P.PPNO=T.PPNO;
            -> /
        +----------+---------+
        | PNRNo    | Name    |
        +----------+---------+
        | PNRO0006 | NAME001 |
        | PNRO0003 | NAME002 |
        | PNRO0007 | NAME002 |
        | PNRO0002 | NAME003 |
        | PNRO0009 | NAME003 |
        | PNRO0004 | NAME004 |
        | PNRO0008 | NAME004 |
        | PNRO0001 | NAME005 |
        | PNRO0005 | NAME005 |
        +----------+---------+
        9 rows in set (0.00 sec)

我不会错的

尝试预设PNR_编号和名称变量IE

SET PNR_No = '' ;
SET Name = '' ;
这是因为如果concat中的任何项为NULL,则返回NULL