SQLストアド・プロシージャは、次を確立します:
PROCEDUREのproc_variableをCREATE()ベギンdec_var_ VARCHAR(100)を宣言。rep_num int型を宣言します。EXECUTION_ID_ HAVING COUNT(名_)でACT_RU_VARIABLE名_ = 'yjdqsj' 群からSELECT ID_ためdec_var CURSORを宣言> 1。OPEN dec_var;繰り返すdec_var_ INTO dec_varをFETCH。ID_ = dec_var_ ACT_RU_VARIABLE。DELETE FROM。rep_num ENDのREPEAT UNTIL。CLOSE dec_var;終わり;
上記のステートメントが直接実行されている場合は、それが最初に遭遇する「;」オーバーで、その後、残りが与えられます。その理由は、デフォルトのmysqlコマンド・ターミネータがセミコロンであるということです、彼らはターミネータを実行する前に修正する必要があります。
MySQLの(ルート@ localhostを:jjsworkflow)>#区切り文字は、コマンド・ターミネータを変更する// //は、(ランダム)でありますMySQLの(ルート@ localhostを:jjsworkflow)>(PROCEDUREのproc_variableをCREATE)- > BEGIN- > DECLAREのdec_var_ VARCHAR(100)。- > DECLAREのrep_num int型。- > EXECUTION_ID_ HAVING COUNT(名_)> 1 BY ACT_RU_VARIABLE名_ = 'yjdqsj' 群からSELECT ID_ためdec_var CURSORを宣言する。- > OPEN dec_var。- > REPEAT- > dec_var_ INTO dec_varをFETCH。- > ID_ = dec_var_ ACT_RU_VARIABLE FROM DELETE。- > rep_numのEND REPEAT UNTIL。- > CLOSEのdec_var。- >終了。- > // ## //エンドの上に宣言されたがために、入力した最後の文を実行します
それは//「」「//一緒に行っ間のパッケージの内容にあります。この変更は、セッションレベルで、障害が発生した後に終了
ます。https://www.cnblogs.com/rockbes/p/3969786.htmlで再現