mysql - 存儲過程

相似於java的方法java

 

1. 建立:sql

 
 
DELIMITER $$   #設置存儲過程結束標記,防止混淆,這個符號能夠本身設,用完後要改回';'
CREATE PROCEDURE pro_test( IN 參數名 類型 , OUT 參數名 類型, INOUT 參數名 類型)  #表示傳入參數,輸出參數,同時輸入輸出的參數,能夠多個。
BEGIN
    #sql語句
END $$
DELIMITER ;

 

2. 使用:測試

call 存儲過程名(參數列表)ui

 

例子1:無參數spa

DELIMITER $$
CREATE PROCEDURE pro_test_no_parameter()
BEGIN
    INSERT INTO userinfo VALUES(7,'person1','1990-01-01');
END $$
DELIMITER ;

CALL pro_test_no_parameter();

命令行 和 sqlyog中不太同樣- -sqlyog中能夠的命令行必定能夠, 命令行能夠的sqlyog有時很差用。。。因此都用sqlyog測試命令行

 

例子2:無參數有變量code

DELIMITER $$
CREATE PROCEDURE pro_test_no_parameter1()
BEGIN
    DECLARE a INT;
    SET a = 8;
    INSERT INTO userinfo VALUES(a,'person2','1990-02-02');
END $$
DELIMITER ;

CALL pro_test_no_parameter1();

 

例子3:有參數blog

#建立
DELIMITER $$
CREATE PROCEDURE pro_test_parameter( IN input INT, OUT output VARCHAR(20), INOUT param INT)
BEGIN
    SET param = param + 1;
    SELECT username INTO output FROM userinfo WHERE uid = input;
END $$
DELIMITER ;

#使用
SET @p = 2;
CALL pro_test_parameter(1, @output, @p);
SELECT @output,@p;  #顯示結果

 

 

3. 刪除:input

drop procedure 存儲過程名;class

 

4.查看存儲結構結構:

show create procedure pro_test_no_parameter;

 

不能修改內部的sql語句。

相關文章
相關標籤/搜索