0

データを挿入するための小さな (今のところ) ストアド プロシージャを作成しています。これを作成すると、エラーが発生します。

DROP PROCEDURE IF EXISTS InsertTESTData;
delimiter $$
CREATE PROCEDURE InsertTESTData (
p_pink_no VARCHAR,
p_carrier VARCHAR,
p_thisno INT
)
BEGIN
INSERT INTO RefDB (pink_no,carrier,thisno) 
    VALUES 
(p_pink_no,p_carrier,p_thisno);
END $$
delimiter ;

そして、私がいつも得るエラーは、次のような 1064 SQL エラーです。

Error : 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 'p_carrier VARCHAR,p_thisno IN) BEGIN INSERT INTO RefDB (pink_no,carrier,t' at line 2

私はすべてをカバーしたと思っていましたが、今は髪を引っ張っています!

4

2 に答える 2

0

varcharこのようにパラメータの長さを定義する必要があります

p_pink_no VARCHAR(100)

変更する

p_thisno IN

p_thisno INT

完全な例:

DROP PROCEDURE IF EXISTS InsertTESTData;
delimiter $$
CREATE PROCEDURE InsertTESTData (
    p_pink_no VARCHAR(100),
    p_carrier VARCHAR(100),
    p_thisno INT)
BEGIN
    INSERT INTO RefDB (pink_no,carrier,thisno) 
    VALUES (p_pink_no,p_carrier,p_thisno);
END $$
delimiter ;
于 2012-07-02T09:47:34.880 に答える
-1

データ型のサイズを宣言する必要があります。その後、コードが正常に実行されると確信しています。これに従ってください

DROP PROCEDURE IF EXISTS InsertTESTData;
delimiter $$
CREATE PROCEDURE InsertTESTData (
    p_pink_no VARCHAR(20),
    p_carrier VARCHAR(200),
    p_thisno number(23))
BEGIN
    INSERT INTO RefDB (pink_no,carrier,thisno) 
    VALUES (p_pink_no,p_carrier,p_thisno);
END $$
delimiter ;
于 2014-09-26T07:13:06.967 に答える