簡體   English   中英

mysql中if…end-if存儲過程出錯

[英]Error in if…end-if stored procedure in mysql

drop procedure if exists test;

delimiter $$
create procedure `test`() 
begin 
    DECLARE done INT DEFAULT FALSE;
    DECLARE i1 VARCHAR(20);
    DECLARE i2 DATE;
    DECLARE i3 VARCHAR(20);
    DECLARE i4 INT; 
    DECLARE curs1 CURSOR FOR SELECT * FROM test11;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
    OPEN curs1; 
    FETCH curs1 INTO i1,i2,i3,i4;
    if i4=22 then
        insert into test1(abc) values(i1);
    end if ;
    CLOSE curs1; 
end ;

;;
delimiter ;

以上拋出錯誤: SQL Error [1064] [42000]: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 14 SQL Error [1064] [42000]: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 14

create table test11(abc varchar(20), cde varchar(20), eg varchar(20), asda varchar(20));
insert into test11 values("Hello",'1989-08-09','sdads','22');

create table test1(abc varchar(20), cde int(20), eg date, asda varchar(20));

我不是我做錯了。 語法似乎很好。

drop procedure if exists sp;
CREATE PROCEDURE sp()
BEGIN
  DECLARE intoffer INT;
  SELECT max(asda) INTO intoffer FROM test11;
  IF (intoffer IS NULL) THEN
    SET intoffer = 1;
  ELSE
    SET intoffer = intoffer + 1;
  END IF;
  INSERT INTO test1 (asda) VALUES (intoffer);
end;

這是另一個引發相同錯誤的過程。 刪除if..end-if后,兩個代碼似乎都可以正常工作。

您缺少fetch from

drop procedure if exists test;

delimiter $$
create procedure `test`() 
begin 
    DECLARE done INT DEFAULT FALSE;
    DECLARE i1 VARCHAR(20);
    DECLARE i2 DATE;
    DECLARE i3 VARCHAR(20);
    DECLARE i4 INT; 
    DECLARE curs1 CURSOR FOR SELECT * FROM test11;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
    OPEN curs1;
    insertLoop: LOOP 
    FETCH FROM curs1 INTO i1,i2,i3,i4;
    if i4=22 then
        insert into test1(abc) values(i1);
    end if ;
    END LOOP insertLoop;
    CLOSE curs1; 
end ;

;;
delimiter ;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM