Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这个mysql函数有什么问题?_Mysql - Fatal编程技术网

这个mysql函数有什么问题?

这个mysql函数有什么问题?,mysql,Mysql,当我运行这个函数时 CREATE PROCEDURE alege() BEGIN declare v_prenumeNou VARCHAR(15); declare v_numeRandom INTEGER(10); declare v_prenumeRandom INTEGER(10); declare v_idCutremurRandom INTEGER(10); set v_numeRandom =

当我运行这个函数时

CREATE PROCEDURE alege()
    BEGIN
        declare v_prenumeNou VARCHAR(15);
        declare v_numeRandom INTEGER(10);
        declare v_prenumeRandom INTEGER(10);
        declare v_idCutremurRandom INTEGER(10);

        set v_numeRandom = 1 + CEIL ( RAND() * 50 );
        set v_prenumeRandom = 1 + CEIL ( RAND() * 50 );
        set v_idCutremurRandom = 1 + CEIL ( RAND() * 50 );

        select prenume into v_prenumeNou from (SELECT prenume, rownum as v_rn from voluntari) where v_rn=v_prenumeRandom;
        select nume into v_numeNou from (SELECT nume, rownum as v_rn from voluntari) where v_rn=v_numeRandom;

        v_idPersoanaNou := v_idPersoanaNou + 1;

        INSERT INTO voluntari (IDCUTREMUR, IDPERSOANA, NUME, PRENUME) 
        VALUES (CONCAT('C',IFNULL(v_idCutremurRandom, '')), CONCAT('V',IFNULL(v_idPersoanaNou, '')) , v_numeNou, v_prenumeNou);
END;
我有这个错误

[Err]1248-每个派生表都必须有自己的别名


我怎样才能解决这个问题

必须为select into语句中的每个子查询添加别名:

select prenume 
into v_prenumeNou 
from (SELECT prenume, rownum as v_rn 
      from voluntari) t1  <-----------
where v_rn=v_prenumeRandom;

select nume 
into v_numeNou 
from (SELECT nume, rownum as v_rn 
      from voluntari) t1 <------------
where v_rn=v_numeRandom;

尝试这样做,只需更改from子句的别名每个派生表都必须有一个别名:

CREATE PROCEDURE alege()
    BEGIN
        declare v_prenumeNou VARCHAR(15);
        declare v_numeRandom INTEGER(10);
        declare v_prenumeRandom INTEGER(10);
        declare v_idCutremurRandom INTEGER(10);

        set v_numeRandom = 1 + CEIL ( RAND() * 50 );
        set v_prenumeRandom = 1 + CEIL ( RAND() * 50 );
        set v_idCutremurRandom = 1 + CEIL ( RAND() * 50 );

        select prenume into v_prenumeNou from (SELECT prenume, rownum as v_rn from voluntari) AS A where v_rn=v_prenumeRandom;
        select nume into v_numeNou from (SELECT nume, rownum as v_rn from voluntari) AS B where v_rn=v_numeRandom;

        v_idPersoanaNou := v_idPersoanaNou + 1;

        INSERT INTO voluntari (IDCUTREMUR, IDPERSOANA, NUME, PRENUME) 
        VALUES (CONCAT('C',IFNULL(v_idCutremurRandom, '')), CONCAT('V',IFNULL(v_idPersoanaNou, '')) , v_numeNou, v_prenumeNou);
END;