2011-11-09 15 views
0

put delimiterディレクティブ、セミコロンを忘れて、[select variable = field]のようなmysqlで有効でない構文を使用していました。
tsl構文を使用すると、[関数から結果セットを返すことはできません]、誤って助けてください。
@AndreKRは、すべてそれを私に教えてくれてありがとう。
私はmysqlworkbench 5.2.30 CEを使用しています。 なる仕事関数:bigintを返すときに関数が結果セットを関数から返すことができません

delimiter // 
CREATE FUNCTION nextval (seq_name varchar(100)) 
    RETURNS bigint(20) 
    READS SQL DATA 
    NOT DETERMINISTIC 
    BEGIN 
    DECLARE workval bigint(20); 
    SELECT count(1) into workval 
     FROM tip_sequence 
     WHERE sequencename = seq_name; 
    IF workval <> 1 THEN 
     DELETE 
      FROM tip_sequence 
      WHERE sequencename = seq_name; 
     INSERT 
      INTO tip_sequence (sequencename, sequenceval, sequencestep) 
      VALUES (seq_name, 1, 1); 
    END IF; 
    SELECT sequenceval into workval 
     FROM tip_sequence 
     WHERE sequencename = seq_name; 
    UPDATE tip_sequence 
     SET sequenceval = sequenceval + sequencestep 
     WHERE sequencename = seq_name; 
    RETURN workval; 
    END// 
delimiter ; 
+0

私は混乱しています。これはmysqlまたはtsqlであるはずですか?同時に両方をすることはできません。 tsqlの場合、変数に接頭辞 '@'を付ける必要があります。 – deutschZuid

答えて

1

私はSELECT workval = count(1) FROM ...構文が有効であるとは思いません。私はあなたが意味するものは:SELECT count(1) INTO workval FROM ...と思います。

+0

は今、その作品に感謝しています。 – newway

関連する問題