2011-11-08 4 views
1

put delimiterディレクティブ、いくつかのセミコロンを忘れていて、mysqlで有効でない[select variable = field]のようなtsl構文を使用していました。
tsl構文を使用すると、[関数から結果セットを返すことはできません]、誤って助けてください。
@AndreKRは、すべてそれを私に教えてくれてありがとう。
私はmysqlworkbench 5.2.30 CEを使用しています。 仕事関数になる:カスタムnextval関数内のmysql 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バージョン.... –

+0

@Mitch小麦バージョン[Serverバージョン:5.1.53-コミュニティのMySQL Community Serverの(GPL)]である – newway

答えて

0

DECLARE workval bigint(20);行の最後にセミコロンを持つ最初のものであるので、これはあなたがクライアントにもよるが、私は」(機能コードを入力する前に、区切り文字を変更するのを忘れ疑います再使用)。 ?

はするようにコードを変更してみてください:

DELIMITER # 
CREATE FUNCTION nextval (seq_name varchar(100)) 

... 

END# 
+0

どうもありがとう、その問題を解決する。私は今新しい問題を抱えており、詳細を編集しました。あなたが私に指摘した矯正もしました。 – newway

+0

別の問題がある場合は、新しい質問を開きます。 (どのソリューションに単語 "into"と何か関係があります。) – AndreKR

+0

Im sory、私は別の変数を宣言して値を転送して返しますが、その動作はしません。詳細が尋ねられます:http:// functionover-not-allowed-to-return-a-result-set-from-a-function-whe-testoverflow.com/questions/8073404/function-complain-about-nhe – newway

関連する問題