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)
还没有任何评论哟~
