How to call stored procedure at sqlfiddle?

2019-07-18 11:15发布

问题:

I put the following into the Schema panel at sqlfiddle:

CREATE TABLE tb_patient (
  `idPatient` INTEGER,
  `prenomPatient` VARCHAR(12),
  `nomPatient` VARCHAR(6)
)//

INSERT INTO tb_patient
  (`idPatient`, `prenomPatient`, `nomPatient`)
VALUES
  ('267', 'Marie Claude', 'CARRIE'),
  ('268', 'Marie Claude', 'CARRIE')//


create procedure findTwins()
begin 
    declare getNom varchar(40);
    declare getPrenom varchar(40);
    declare getId int default 1;
    declare getId2 int default 1;
    if(select count(*) from tb_patient group by nomPatient,prenomPatient having count(*)=2 limit 1)
    then
        select nomPatient,prenomPatient into getNom,getPrenom from tb_patient group by nomPatient,prenomPatient having count(*)=2 limit 1; 
        set getId=(select min(idPatient) from tb_patient where nomPatient=getNom and prenomPatient=getPrenom);
        set getId2=(select  max(idPatient) from tb_patient where nomPatient=getNom and prenomPatient=getPrenom);
        select concat(getNom,' ',getPrenom,' ',getId,' ',getId2) as Patient;
    end if; 
end//

I selected // from the delimiter menu, and successfully built the schema.

Then I put:

CALL FindTwins

in the query panel. When I tried to run the query, I got the error message:

DDL and DML statements are not allowed in the query panel for MySQL; only SELECT statements are allowed. Put DDL and DML in the schema panel.

How am I supposed to see the result of the procedure if I can't put a call in the query panel?

http://www.sqlfiddle.com/#!9/b03ede/4

回答1:

This is a SQLFiddle bug. From https://github.com/zzzprojects/sqlfiddle3/issues/5:

Unfortunately, I don't think this statement currently work in this version.

The good news is that we are currently working on a new version. The new version should allow this without a problem but unfortunately, we need more time before releasing it.

This seems to work in earlier versions: Execute triggers stored procedures on SqlFiddle. Mysql.