2016-09-08 3 views
1

が存在する場合、私は以下のようにプロシージャを格納していますMySQLのストアドプロシージャのチェック表は、その後アルター構文エラー

DROP PROCEDURE IF EXISTS TEST; 
CREATE PROCEDURE TEST() 
BEGIN 
    IF (SELECT count(*) FROM (SELECT table_name 
       FROM INFORMATION_SCHEMA.TABLES 
       WHERE table_name LIKE 'User') A) > 0 THEN 
     ALTER TABLE User DROP FOREIGN KEY FK_forkey 
    END IF; 
END 

SELECT .... 

を私はEND IFで構文エラーがあります。私はこれを解決するために多くの方法を試みてきましたが、それまでは成功していませんでした。デリミタを// DROP PROCEDUREの後とENDの後に追加すると、区切り文字(区切り文字はこの位置で有効な入力ではありません)でエラーが発生します。私が見逃したこと/どうして私はそれを間違ったのですか?ご回答いただきありがとうございます。

以上更新

DROP PROCEDURE IF EXISTS TEST; 
DELIMITER // 
CREATE PROCEDURE TEST() 
BEGIN 
    IF EXISTS(SELECT table_name 
       FROM INFORMATION_SCHEMA.TABLES 
       WHERE table_name LIKE 'User') 
    THEN 
     ALTER TABLE User DROP FOREIGN KEY FK_AccountID; 
    END IF; 
END // 
DELIMITER; 

を更新しましたが、私の新しい変化であり、それは最後の区切り文字でエラーを報告:Delimiter is not valid input at this position

+0

'; 'を' ALTER TABLEユーザフォークキーFK_forkey'行の後に置いていましたか? – Evgeny

+0

こんにちは@Evgeny、ご意見ありがとうございます。私は私の質問を更新しました。上記をご覧ください。 – Leo

+1

'delimiter'と'; 'の間にスペースを入れなければなりません – Solarflare

答えて

0

彼/彼女が」didnのため、この答えは、@Solarflareからです答えを投稿すると、私はそれを代わりにして、この質問に答えてマークを付けることができ、私と同じ問題に遭遇するかもしれない他の初心者にとっては便利かもしれません。

区切り記号との間にはスペースを入れてください。

関連する問題