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

MySQLでストアドプロシージャを使用しているときに2つの問題が発生する

    それが制限です。

    ここで、回避策:ネストされた BEGIN ... ENDを追加します ブロックします。

    DELIMITER $$
    CREATE PROCEDURE ...
    BEGIN
      DECLARE ... INT ... -- variable
      CREATE TEMPORARY TABLE... -- following the declarations, no more declarations allowed, unless...
      BEGIN -- resets the scope, changes the rules, allows more declarations
        DECLARE ... INT ... -- variables
        DECLARE ... CURSOR ...
        DECLARE CONTINUE HANDLER ...
        OPEN ...
        ...
      END;
    END $$
    

    内側のブロックの別の変数の名前が競合しない限り、外側のブロックのすべての変数は、内側のブロックのスコープ内にあります。

    HANDLER 競合するハンドラーがそこで宣言されていない限り、外部ブロックのシグナルも内部ブロックのスコープに含まれます。宣言されている場合、内部ハンドラーは例外をキャッチし、外部ハンドルは<コードを含む内部ハンドラーによってスローされたものをすべてキャッチします。> RESIGNAL 。

    複数のネストレベルが許可されます。 thread_stack<のサイズ/ code> 要因かもしれませんが、ドキュメントは不明確です。デフォルトになる前から262,144バイトのスレッドスタックを実行していて、制限に遭遇したことはありません。



    1. MySQLのSQLクエリでIN句としてArrayList<>を渡す方法

    2. androidのSqliteからのListView

    3. MySQLサーバーのInnoDBバッファープールサイズの計算

    4. SQL Server(T-SQL)で現在のログインIDを取得する