我试图在mysql中创建一个edit或add过程,但遇到了一个错误。代码如下:
CREATE DEFINER = CURRENT_USER PROCEDURE `SalesAddOrEdit`(u_id int, u_prodid VARCHAR(255), u_datepurchase DATE, u_price VARCHAR(255), u_customer_1 VARCHAR(255), u_paid_1 VARCHAR(255))
BEGIN
IF uid = 0 then
INSERT INTO sales(prodid, datepurchase, price, customer_1, paid_1, shipped_1)
VALUES (u_prodid, u_datepurchase, u_price, u_customer_1, u_paid_1, u_shipped_1)
Else
UPDATE sales
SET prodid = u_prodid,
SET datepurchase = u_purchasedate,
SET price = u_price,
SET customer_1 = u_customer_1,
SET paid_1 = u_paid_1,
SET shipped_1 = u_shipped_1
WHERE uid = u_id;
End If;
END;
我尝试了多种方法,例如使用declare声明变量,使用@(variables)表示no available。我得到的错误是:
1064-您的sql语法有错误;在第5行的“insert into sales(prodid,datepurchase,price,customer\u 1,paid\u 1,shipped\u 1)”附近,检查与您的mysql服务器版本对应的手册中使用的正确语法。
也测试了此代码:
DELIMITER //
CREATE PROCEDURE SalesAddOrEdit()
BEGIN
DECLARE u_id int;
DECLARE u_prodid VARCHAR(255);
DECLARE u_datepurchase DATE;
DECLARE u_price VARCHAR(255);
DECLARE u_customer_1 VARCHAR(255);
DECLARE u_paid_1 VARCHAR(255);
IF uid = 0 THEN
INSERT INTO sales(prodid, datepurchase, price, customer_1, paid_1, shipped_1)
VALUES (u_prodid, u_datepurchase, u_price, u_customer_1, u_paid_1, u_shipped_1)
Else
UPDATE sales
SET prodid = u_prodid;
SET datepurchase = u_purchasedate;
SET price = u_price;
SET customer_1 = u_customer_1;
SET paid_1 = u_paid_1;
SET shipped_1 = u_shipped_1;
WHERE uid = u_id;
End if;
END; //
DELIMITER ;
就在更新部分;我也试过:
UPDATE sales
SET prodid = u_prodid,datepurchase = u_purchasedate,price = u_price,customer_1 = u_customer_1,paid_1 = u_paid_1,shipped_1 = u_shipped_1
WHERE uid = u_id;
2条答案
按热度按时间j13ufse21#
的正确语法
update
只使用一个set
条款:s2j5cfk02#
固定的: