Advertisement

MySQL报错:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server

阅读量:

There is a syntax error in your SQL statement; refer to the manual that is compatible with your MySQL server version to locate the correct syntax needed near the apostrophe symbol.

在这里我在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字段指定适当的长度后即可实现数据存储。建议确保传递的数据类型与数据库列匹配以便提高数据一致性。供参考或帮助理解

全部评论 (0)

还没有任何评论哟~