簡體   English   中英

我試圖在mysql phpmyadmin中創建一個存儲過程

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM