返回表sql的函数

时间:2016-07-05 16:07:31

标签: mysql sql

我有这个功能:

DROP FUNCTION IF EXISTS MinCarAltezza;
 DELIMITER $$
    CREATE FUNCTION MinCarAltezza(altezza INT) 
    RETURNS SchedaTab TABLE(
        Nome varchar(64),
        Cognome varchar(64),
        ID_Scheda int(10),
        Sequenza int(2),
        nSerie int(2),
        nRipetizioni int(2),
        Carico_Minimo decimal(4,1),
        Esercizio varchar(30),
        PRIMARY KEY(Nome,Cognome,Esercizio)
    ) 
    AS BEGIN
    INSERT SchedaTab
    SELECT DISTINCT U.Nome,U.Cognome,P.ID_Scheda,P.Sequenza,P.nSerie, 
            P.nRipetizioni,MIN(P.Carico),P.Esercizio
    FROM utente AS U, scheda AS S, programma AS P
    WHERE U.CF=S.ID_Utente AND S.ID_Scheda=P.ID_Scheda AND U.Altezza>altezza 
        AND P.Carico<>0 
        AND S.ID_Ist NOT IN(SELECT CF FROM istruttore WHERE Stipendio>500)
    GROUP BY U.Nome,U.Cognome,S.ID_Scheda

    RETURN   
    END $$
    DELIMITER ;

在第4行给出了一个错误,我在其中声明了返回类型TABLE。 我有什么遗失的吗?

如果有人需要,那就是数据库:http://pastebin.com/DWYqVBpa

谢谢

1 个答案:

答案 0 :(得分:0)

在MySQL中没有&#34;表&#34;数据类型,因此错误消息。正如stored functions上的MySQL文档所述,返回值可以是

  

任何有效的MySQL data type

因此,存储的函数不能返回表。我会将函数更改为存储过程和

  • 在程序结束时有一个select语句(MySQL返回最后一次选择的结果)
  • 或创建包含数据的临时表,并在out参数
  • 中返回临时表的名称