sql >> データベース >  >> RDS >> Mysql

mysql区切り文字エラー

    ENDの後にセミコロンを削除します 。

        ...
    END
    |
    DELIMITER ;
    

    コメントを再確認してください。新しい区切り文字を宣言するときに、現在の区切り文字を使用することはできません。紛らわしいように聞こえますが、これを行うかどうかを検討してください:

    DELIMITER |;
    

    これで、MySQLは区切り文字が「|;」であると見なします。 (2つの文字、パイプとセミコロン)。考えてみれば、DELIMITER 必須 MySQLクライアントによって特別な方法で扱われます。 できない唯一のステートメントです その後に現在の区切り文字が続きます。

    したがって、区切り文字をパイプに設定するときは、次のようにします。

    DELIMITER |
    

    セミコロンに戻すときは、次のようにします。

    DELIMITER ;
    

    FWIW、MySQL 5.0.75のローカルテストデータベースでエラーなしで次を実行しました:

    DROP FUNCTION IF EXISTS PersonName;
    DELIMITER |
    
    CREATE FUNCTION PersonName( personID SMALLINT )
    RETURNS CHAR(20)
    BEGIN
      DECLARE pname CHAR(20) DEFAULT '';
      SELECT name INTO pname FROM family WHERE ID=personID;
      RETURN pname;
    END
    |
    DELIMITER ;
    


    1. クエリはWebアプリからタイムアウトしますが、ManagementStudioからは正常に実行されます

    2. SQLiteQueryBuilderのselectionArgsは、列の整数値では機能しません

    3. SQLサーバーにIPアドレスを格納するための最も適切なデータ型は何ですか?

    4. SQLiteデータベースを復元する