2016-04-23 26 views
1

既に列名(String)、id(int)、age(int)のテーブル従業員があります。 構文がどこで間違っているのか分かりませんか?#1064 - SQL構文にエラーがあります

CREATE PROCEDURE recins (
    name1 IN employee.name%type , 
    id1 IN employee.id%type , 
    age1 IN employee.age%type 
) AS 
BEGIN 
    INSERT INTO employee VALUES(name1,id1,age1); 
END; 
+1

おそらく 'delimiter'ステートメントが必要です。 –

+0

このエラーメッセージには、エラーがどこで発生するかについてのより具体的な場所が必要です。例えば、 'NEAR 'END'のようなものです。 –

+0

正しい構文を使用するMySQLサーバーのバージョンに対応するマニュアルをチェックしてください。' IN employee.name%type、id1 IN 1行目 - phpMyadminによって表示されるメッセージの残りの部分 –

答えて

1
create table employee2 
(
    name varchar(100) not null, 
    id int not null, 
    age int not null 
); 


DELIMITER $$ 
CREATE PROCEDURE recins (
    IN name1 varchar(100), 
    IN id1 int, 
    IN age1 int 
) 
BEGIN 
    INSERT INTO employee2 (name,id,age) VALUES(name1,id1,age1); 
END $$ 
DELIMITER ; 

-- test: 
call recins('a',1,2); 

デリミタは、格納されprocsの、イベント、関数の特別なラッパーです。 Delimiter ;は、格納されたprocの最後にセミコロンの通常/デフォルト区切りに戻します。

上記を試験した。

+0

ありがとうございますが、私は間違ってパラメータ%typeコマンドを使用していました構文。 –

+0

私はそのようなことを見たことがない。それは有効なmysqlデータ型でなければなりません。それがあなたの気持ちを良くするならば、DELIMITERのことだけで時間を浪費する人は珍しくありません。p – Drew

+0

私は愚かです、私はoracleとmysqlを混同していました。助けてくれてありがとう –

関連する問題