[英]Am trying to create a stored procedure in mysql phpmyadmin
我试图得到一个字段,如果它不存在,我希望将其插入表中,但我有一个错误。 对于我试过的第一个查询
CREATE PROCEDURE reg_val( IN pid VARCHAR(30), IN pyd VARCHAR(50), IN dat VARCHAR(20), OUT value VARCHAR(50) )
BEGIN TRANSACTION
DECLARE @id AS VARCHAR(50)
SELECT @id = paymentid FROM table WHERE phoneid=pid
IF @id IS NULL
BEGIN
INSERT INTO user_info (phoneid, paymentid, created_at) VALUES (pid, pyd, dat)
SELECT @id = SCOPE_IDENTITY()
END
SELECT @id
COMMIT TRANSACTION
我收到这个错误
您的SQL语法有错误; 查看与您的MySQL服务器版本对应的手册,以便在'DECLARE @id AS VARCHAR(50)SELECT @id = paymentid FROM table WHERE phoneid ='第3行附近使用正确的语法
所以我无法解决这个问题,我尝试了这个新的查询
CREATE PROCEDURE reg_val( IN pid VARCHAR(30), IN pyd VARCHAR(50), IN dat VARCHAR(20), OUT value VARCHAR(50) )
BEGIN
IF EXISTS (SELECT phoneid FROM user_info WHERE phoneide=pid) THEN
SELECT paymentid FROM user_info WHERE phoneid=pid
ELSE
INSERT INTO user_info (phoneid, paymentid, created_at) VALUES (pid, pyd, dat)
SELECT paymentid FROM user_info WHERE phoneid=SCOPE_IDENTITY()
END IF
但我也得到这个错误
您的SQL语法有错误; 检查与MySQL服务器版本对应的手册,以便在第5行使用'ELSE THEN INSERT INTO user_info(phoneid,paymentid,created_at)VAL'附近的正确语法
也许我对形成复杂查询的理解是关闭的,但任何帮助都会受到赞赏。
请更改您的Stored Procedure
如下(检查注释中的更改):
DELIMITER $$ // change delimiter
CREATE PROCEDURE reg_val( IN pid VARCHAR(30), IN pyd VARCHAR(50), IN dat VARCHAR(20), OUT VALUE VARCHAR(50) )
BEGIN
IF EXISTS (SELECT phoneid FROM user_info WHERE phoneide=pid) THEN
SELECT paymentid FROM user_info WHERE phoneid=pid; // use semicolon
ELSE
INSERT INTO user_info (phoneid, paymentid, created_at) VALUES (pid, pyd, dat);// use semicolon
SELECT paymentid FROM user_info WHERE phoneid=SCOPE_IDENTITY();// use semicolon
END IF;// use semicolon
END;// use end and semicolon
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.