MySQL报错: SQL 構文にエラーがあります。MySQL サーバーに対応するマニュアルを確認してください。

問題の内容: SQL 構文にエラーがあります。near ' を使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

ここで、mysqlにストアドプロシージャを持っています

元のコード:

DELIMITER $
CREATE PROCEDURE closemoney(
-- 修改用户金额,积分,用户id数据
IN mon INT,IN yintegral DOUBLE,IN userid DOUBLE,
-- 修改商家库存扣除数量数据
IN gmon INT,IN marchantid INT,IN size VARCHAR,
-- 订单表储存
IN dtime DATETIME,IN dmon DOUBLE,IN clieid INT,IN storeid INT,IN addrid INT,
-- 交易记录储存
IN integral VARCHAR,IN zmon DOUBLE)
BEGIN
    -- 扣除用户的金额,增加用户积分,上传:扣除金额,积分,用户id
    UPDATE customer SET cust_balance=(cust_balance-mon),cust_integral =yintegral WHERE cust_id=userid;
    -- 商家的库存扣除数量,上传:购买数量,商品id,商品尺码
    UPDATE tab_goodsdetail SET goods_stock=(goods_stock-gmon) WHERE goods_id=marchantid AND goods_size=size;
    -- 订单表储存。上传:下单时间,下单金额,顾客id,店铺id,地址id
    INSERT INTO tab_order VALUES (NULL,dtime,dmon,NULL,clieid,storeid ,addrid);
    -- 交易记录储存。上传:交易类型,交易金额,顾客id=上一个条件的顾客id
    INSERT INTO tab_cashlog VALUES (NULL,integral ,zmon,clieid);
END $

その後、調査の結果、値を渡したときに varchar が長さを与えないことがわかりました。

修正されたコード

DELIMITER $
CREATE PROCEDURE closemoney(
-- 修改用户金额,积分,用户id数据
IN mon INT,IN yintegral DOUBLE,IN userid DOUBLE,
-- 修改商家库存扣除数量数据
IN gmon INT,IN marchantid INT,IN size VARCHAR(10),
-- 订单表储存
IN dtime DATETIME,IN dmon DOUBLE,IN clieid INT,IN storeid INT,IN addrid INT,
-- 交易记录储存
IN integral VARCHAR(50),IN zmon DOUBLE)
BEGIN
    -- 扣除用户的金额,增加用户积分,上传:扣除金额,积分,用户id
    UPDATE customer SET cust_balance=(cust_balance-mon),cust_integral =yintegral WHERE cust_id=userid;
    -- 商家的库存扣除数量,上传:购买数量,商品id,商品尺码
    UPDATE tab_goodsdetail SET goods_stock=(goods_stock-gmon) WHERE goods_id=marchantid AND goods_size=size;
    -- 订单表储存。上传:下单时间,下单金额,顾客id,店铺id,地址id
    INSERT INTO tab_order VALUES (NULL,dtime,dmon,NULL,clieid,storeid ,addrid);
    -- 交易记录储存。上传:交易类型,交易金额,顾客id=上一个条件的顾客id
    INSERT INTO tab_cashlog VALUES (NULL,integral ,zmon,clieid);
END $

varchar に対応する長さを指定すると、作成が成功します (保険のために、渡された値の型はデータベースの列名の型と一致することが推奨されます)。

おすすめ

転載: blog.csdn.net/qq_53590046/article/details/124767388