創建存儲過程簡單示例:
DELIMITER //
CREATE PROCEDURE ccgc()
BEGIN
SELECT * FROM TEXT;
SELECT * FROM s_user;
END
//DELIMITER ;
//調用
CALL ccgc()
創建帶參數的存儲過程:
DELIMITER //
CREATE PROCEDURE ccgc2(IN c_name VARCHAR(32))
BEGIN
SELECT * FROM TEXT WHERE NAME = c_name;
SELECT * FROM s_user;
END
//DELIMITER ;
//調用
CALL ccgc2(參數)
創建輸出參數存儲過程
DELIMITER //
CREATE PROCEDURE ccgc3(OUT c_name VARCHAR(32))
BEGIN
SET c_name = '666';
SELECT c_name;
END
//DELIMITER ;
//調用
CALL ccgc3(@c_name)
輸入輸出和變量
DELIMITER //
CREATE PROCEDURE ccgc7(INOUT c_name VARCHAR(32))
BEGIN
DECLARE hh VARCHAR(32) DEFAULT '1111111111';
SELECT * FROM TEXT WHERE NAME = hh;
END
//DELIMITER ;
CALL ccgc7(@c_name)
總結:
1) 如果僅僅想把數據傳給MySQL存儲過程,那就用in類型參數;
2) 如果僅僅從MySQL存儲過程返回值,那就用out類型參數;
3) 如果需要把數據傳給MySQL存儲過程經過計算再傳回給我們,那就用inout類型參數。
查看存儲過程;SHOW CREATE PROCEDURE proc_name;
查看函數:SHOW CREATE FUNCTION func_name;
刪除存儲過程:DROP PROCEDURE proc_name;
刪除函數:DROP FUNCTION func_nmae;
jpa者mybatis sql調用直接執行CALL ccgc()即可,例:
@Query(value = "call ccgc()",nativeQuery = true)
public List<Map<String,Object>> findZdy(Map<String,Object> map);
