2009-04-08 17 views
0

私はcode.I下にusin私のmysqlデータベースにストアドプロシージャを作成しようとしていますerror.PleaseがMySQLのストアドプロシージャの作成エラー

私のMySQLバージョンを解決するために私を助け得ることは5.0.51b

でいます
CREATE PROCEDURE tv_insert_user(IN firstName VARCHAR(25), 
IN lastName VARCHAR(25), IN emailId VARCHAR(22),IN countryId INT,IN stateId INT) 
    BEGIN 
    INSERT INTO tv_user_master(FIRST_NAME,LAST_NAME,EMAIL,COUNTRY_ID,STATE_ID) VALUES(firstName,lastName,lname,emailId,countryId,stateId) 
    END 

ERROR:


エラーコード:1064 あなたのSQL構文でエラーが発生しています。 (0ミリ秒がとら)

答えて

1

が値リスト

CREATE PROCEDURE tv_insert_user(IN firstName VARCHAR(25), IN lastName VARCHAR(25), IN emailId VARCHAR(22),IN countryId INT,IN stateId INT) 
BEGIN 
INSERT INTO tv_user_master(FIRST_NAME,LAST_NAME,EMAIL,COUNTRY_ID,STATE_ID) 
    VALUES(firstName,lastName,lname,emailId,countryId,stateId) 
          ^^^^^^ 
END 

試しに余分な変数があるライン5 に近い「END」を使用する権利構文についてはMySQLサーバのバージョンに対応するマニュアルを確認してください削除し、まだエラーが発生していないかどうかを確認し、まだ区切り文字を変更していない場合は参照してください。

0

sfossenによると、lnameを削除してください。
そしてまた、挿入の最後にセミコロンを追加します。

 

CREATE PROCEDURE tv_insert_user(IN firstName VARCHAR(25), IN lastName VARCHAR(25), IN emailId VARCHAR(22),IN countryId INT,IN stateId INT) 
    BEGIN 
    INSERT INTO tv_user_master(FIRST_NAME,LAST_NAME,EMAIL,COUNTRY_ID,STATE_ID) VALUES(firstName,lastName,emailId,countryId,stateId); 
    END 
 
5

LNAME-事は、エラーメッセージが何であるかではありません。別の区切り文字を指定する必要があります。 MySQLコマンドのデフォルトの区切り文字はセミコロンですが、セミコロンはステートメントの最後のストアドプロシージャ内で使用されます。この例では、デリミタを//に変更し、それを使用してプロシージャを終了します。これにより、ブロック内でセミコロンを使用することができます。

DELIMITER // 

CREATE PROCEDURE tv_insert_user(IN firstName VARCHAR(25), 
IN lastName VARCHAR(25), IN emailId VARCHAR(22),IN countryId INT,IN stateId INT) 
BEGIN 
    INSERT INTO tv_user_master(FIRST_NAME,LAST_NAME,EMAIL,COUNTRY_ID,STATE_ID) VALUES(firstName,lastName,emailId,countryId,stateId); 
END; 
// 

DELIMITER ; 

デリミタビットを解決すると、INSERTコマンドと追加属性(姓が2回)に関するエラーが発生する可能性があります。

+0

はい私はこの答えを探していました。皆様のご支援ありがとうございます – Shyju

関連する問題