アプリ版:「スタンプのみでお礼する」機能のリリースについて

phpMyAdminからストアドプロシージャを作成したいのですが、エラーが表示され作成できません。

DELIMITER //
CREATE PROCEDURE proc1(INT pa char(10))
BEGIN
update sum_table set blank = pa;
END;
//
DELIMITER ;

これを実行したところ以下のエラーが出ました。

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INT pa char(10)) BEGIN update sum_table set blank = pa; END' at line 1

--------------------------------------------------------------------------------

そこでソースから「DELIMITER」を消してもう一度実行してみました。

CREATE PROCEDURE proc1(INT pa char(10))
BEGIN
update sum_table set blank = pa;
END;

すると今度は以下のエラーが表示されました。
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INT pa char(10))
BEGIN
update sum_table set blank = pa' at line 1


どこが間違っているかわからず困っております。
初歩的な質問で凝縮ですが、どなたかご教示いただけますでしょうか?

A 回答 (1件)

まずそのpaはINTなの、char(10)なの。

INTなら

DELIMITER //
CREATE PROCEDURE proc1(pa INT)
BEGIN
update sum_table set blank = pa;
END;
//
DELIMITER ;

やし、char(10)なら

DELIMITER //
CREATE PROCEDURE proc1(pa char(10))
BEGIN
update sum_table set blank = pa;
END;
//
DELIMITER ;

とすれば通るのではないかな。多分INTはINの間違いなのだと思うのだが・・・・。
    • good
    • 0
この回答へのお礼

>まずそのpaはINTなの、char(10)なの。
char型です。

>とすれば通るのではないかな。多分INTはINの間違いなのだと思うのだが・・・・。
おっしゃるとおりINTではなくINの間違いでした。

ご指摘の通り下のように書き直したところ正常に処理できました。

DELIMITER //
DROP PROCEDURE IF EXISTS proc1//
CREATE PROCEDURE proc1(in pa char(10))
BEGIN
update sum_table set blank = pa;
END;
//
DELIMITER ;

そして下記のコマンドで確認したところ、ストアドプロシージャの存在を確認できました。
SHOW PROCEDURE STATUS;

非常に助かりました(#^^#)
ありがとうございました(#^.^#)

お礼日時:2014/03/02 11:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!