在mysql中创建过程需要帮助吗

gt0wga4j  于 2021-08-09  发布在  Java
关注(0)|答案(2)|浏览(262)

我试图在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;
j13ufse2

j13ufse21#

的正确语法 update 只使用一个 set 条款:

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;
s2j5cfk0

s2j5cfk02#

固定的:

DELIMITER $$

CREATE PROCEDURE SalesAddOrEdit()
BEGIN
    DECLARE d_uid int;
    DECLARE d_prodid VARCHAR(255);
    DECLARE d_datepurchase DATE;
    DECLARE d_price VARCHAR(255);

    DECLARE d_customer_1 VARCHAR(255); 
    DECLARE d_paid_1 VARCHAR(255); 
    DECLARE d_shipped_1 VARCHAR(255); 

    IF d_uid = 0 Then
            INSERT INTO sales(prodid, datepurchase, price, customer_1, paid_1, shipped_1)
    VALUES 
        (d_prodid, d_datepurchase, d_price, d_customer_1, d_paid_1, d_shipped_1);
    Else
        UPDATE sales
        SET prodid = d_prodid,  datepurchase = d_datepurchase,  price = d_price,    customer_1 = d_customer_1, paid_1 = d_paid_1,   shipped_1 = d_shipped_1
        WHERE uid = d_uid;
    End If;
END$$

DELIMITER ;

相关问题