MySQL帶參數的存儲過程小例子

jopen 11年前發布 | 12K 次閱讀 MySQL 數據庫服務器

存儲過程P_GET_CLASS_NAME是根據輸入的班級號判斷班級名稱

存儲過程P_INSERT_STUDENT是接收輸入的學生信息,最終將信息插入學生表。

    DROP PROCEDURE IF EXISTS `P_GET_CLASS_NAME`;  
    CREATE PROCEDURE P_GET_CLASS_NAME(IN ID int,OUT NAME VARCHAR(50))  
    BEGIN  
        IF(ID = 1) THEN   
              SET NAME = '一班';  
        END IF;  
        IF(ID = 2) THEN   
              SET NAME = '二班';  
        END IF;  
    END;  


    DROP PROCEDURE IF EXISTS `P_INSERT_STUDENT`;  
    CREATE PROCEDURE P_INSERT_STUDENT(IN ID INT,IN NAME VARCHAR(10),IN CLASSNO INT,IN BIRTH DATETIME)  
    BEGIN  
         SET @ID = ID;  
         SET @NAME = NAME;  
         SET @CLASSNO = CLASSNO;  
         SET @BIRTH = BIRTH;  
         SET @CLASSNAME = NULL;  
         CALL P_GET_CLASS_NAME(@CLASSNO,@CLASSNAME);  

         SET @insertSql = CONCAT('INSERT INTO TBL_STUDENT VALUES(?,?,?,?)');  
         PREPARE stmtinsert FROM @insertSql;  
         EXECUTE stmtinsert USING @ID,@NAME,@CLASSNAME,@BIRTH;  
         DEALLOCATE PREPARE stmtinsert;  
    END;  

    CALL P_INSERT_STUDENT(1,'徐越',1,'2012-10-01 10:20:01');  

在第二個存儲過程中

①利用SET聲明了參數,調用了第一個存儲過程

②在第一個存儲過程中的NAME參數是輸出參數,所以@CLASSNAME這個參數在調用完第一個過程后就被附值

③最終利用CONCAT拼接SQL語句并傳入參數執行SQL語句

 

CALL P_INSERT_STUDENT(1,'徐越',1,'2012-10-01 10:20:01');調用存儲過程

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!