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

このMYSQLクエリを作成する際に何が間違っていたのか理解できません

    • 区切り文字を以外に設定する必要があります ;
    • オプションで、同じ名前のストアドプロシージャがすでに存在するかどうかを確認します。
    • 最後に、区切り文字を;に再定義します。
    • ただし、変数 xを使用する場合を除きます。 このストアドプロシージャの外部。本当に@を使用する必要はありません;その特定のセッションのどこでも変数を使用できるようにします。

    試してみてください(コメントでより多くの説明):

    CREATE TABLE t1 (s1 INT, PRIMARY KEY (s1)); -- create the table
    
    DELIMITER $$ -- redefine the delimiter to $$ (for eg)
    
    DROP PROCEDURE IF EXISTS `handlerdemo` $$ -- drop previous if exists
    
    CREATE PROCEDURE handlerdemo ()
      BEGIN
    
        DECLARE x INT DEFAULT 0; -- datatype is INT 
        -- also a good practice to set default value
    
        SET x = 1; -- no need to use in Session context
        INSERT INTO t1 VALUES (x); -- use variable name here instead of literal value
    
        SET x = 2; 
        INSERT INTO t1 VALUES (x); 
    
      END $$ -- remember that delimiter is $$ right now
    
    -- redefine the Delimiter back to ;
    DELIMITER ;
    


    1. WITHENCRYPTIONの内部

    2. Oracleで複数の行をコンマ区切りのリストに結合するにはどうすればよいですか?

    3. OS XElCapitanでのMySQLdbのエラー

    4. 非特権匿名アクセスを介したPostgreSQLのユーザーアカウントのセルフプロビジョニング