我的程序用光标在mysql中

时间:2018-01-13 18:50:14

标签: mysql

我遇到了问题,我不知道如何解决。 我需要创建一个带有游标的过程来插入Vizite:dataora(我需要一个函数),Medici_Idm,Pacienti_Idm,Cabinete_Idm来自临时表。我的程序不起作用,我也用于选择表:Medici,Pacineti,Cabinete to提取ID。

表1:

CREATE TABLE IF NOT EXISTS Vizite (
        Idv INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
        DataOra DATETIME,
        Medici_Idm  INT NOT NULL,
        Pacienti_Idp INT NOT NULL,
        Cabinete_Idc INT NOT NULL,
        FOREIGN KEY (Medici_Idm) REFERENCES Medici(Idm),
        FOREIGN KEY (Pacienti_Idp) REFERENCES Pacienti(Idp),
        FOREIGN KEY (Cabinete_Idc) REFERENCES Cabinete(Idc)
        ) Engine=INNODB;

表2:

   CREATE TEMPORARY TABLE IF NOT EXISTS TempVizite (
        Idt INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
        DataVizita VARCHAR(250),
        OraIntrare TIME,
        NumePacient VARCHAR(250),
        PrenumePacient VARCHAR(250),
        NumeMedic VARCHAR(250),
        PrenumeMedic VARCHAR(250),
        Cabinet VARCHAR (250)); 

程序:

DELIMITER /
CREATE PROCEDURE VARIANTA3()
BEGIN
    DECLARE M_I,P_I,C_I VARCHAR(100);
    DECLARE I_V INT;
    DECLARE D DATE;
    DECLARE O TIME;


    DECLARE CURS1 CURSOR FOR                -- declaram cursorul
        SELECT IDT,DATAVIZITA,ORAINTRARE,NUMEMEDIC,NUMEPACIENT,CABINET FROM TEMPVIZITE;
    DECLARE EXIT HANDLER FOR 1329 BEGIN END;    -- declaram handler specific erorii de terminarea cursorului


    OPEN CURS1; 
    BUCLA: LOOP
        FETCH CURS1 INTO M_I,P_I,C_I,I_V,D,O;
        INSERT IGNORE INTO  VIZITE VALUES(I_V,@DATAORA,M_I,P_I,C_I);
        SELECT TIMESTAMP(DATAVIZITA,ORAINTRARE) INTO @DATAORA;
        SELECT IDM FROM MEDICI WHERE NUME = NUMEMEDIC INTO M_I;
        SELECT IDP FROM PACIENTI WHERE NUME = NUMEPACIENT INTO P_I;
        SELECT IDC FROM CABINETE WHERE NUME = CABIENT INTO C_I;

    END LOOP;

    CLOSE CURS1;
END /
DELIMITER ;

0 个答案:

没有答案