MySql存儲過程簡單說明

-- --------------------------
-- ######存儲過程##
-- 存儲在數據庫服務器中的一組sql語句,通過在查詢中調用一個指定的名稱來執行這些sql語句命令
-- --------------------------

-- 創建不帶參數的存儲過程
-- 創建一個查看總數的存儲過程
-- 驗證
DROP PROCEDURE IF EXISTS SELECT_COUNT;
-- 創建
CREATE PROCEDURE SELECT_COUNT()
BEGIN
	SELECT COUNT(id) FROM websites;
END;
-- 調用存儲,查看結果
CALL SELECT_COUNT();


-- 創建一個帶參數的存儲過程
-- 根據名字查詢總數
-- 驗證
DROP PROCEDURE IF EXISTS SELECT_NAME_COUNT;
-- 創建
CREATE PROCEDURE SELECT_NAME_COUNT(in _name VARCHAR(225))
BEGIN
	SELECT COUNT(id) FROM websites WHERE `name`=_name;
END;
-- 調用存儲,查看結果
CALL SELECT_NAME_COUNT('小米');

-- 創建帶有輸出參數的存儲過程
-- 根據名字查詢的信息,返回其對應的網站
-- 驗證
DROP PROCEDURE IF EXISTS SELECT_BYNAME_URL; 
-- 創建
CREATE PROCEDURE SELECT_BYNAME_URL(
	in _name VARCHAR(225), -- 輸入參數
	out _url VARCHAR(225), -- 輸出參數
	inout _country VARCHAR(225) -- 輸入輸出參數
)
BEGIN
	SELECT url FROM websites WHERE`name`=_name
	AND country =_country
	INTO _url;
END;
-- 調用存儲,查看結果
SET @_country = 'CN';
SET @_name = '淘寶';
CALL SELECT_BYNAME_URL(@_name,@_url,@_country);
SELECT @_name ,@_url ,@_country ;


-- 創建帶有通配符的存儲過程(模糊查詢)
DROP PROCEDURE IF EXISTS SELECT_BYNAME_LIKE;
CREATE PROCEDURE SELECT_BYNAME_LIKE(in _likename VARCHAR(225))
BEGIN
		SELECT * FROM websites WHERE `name` LIKE _likename;
END;
-- 調用
CALL SELECT_BYNAME_LIKE('%米%');

-- 使用存儲過程進行增刪改
-- 添加信息
DROP PROCEDURE IF EXISTS ADD_websites;
CREATE PROCEDURE ADD_websites(
	_id INT(11),
	_name VARCHAR(225),
	_url VARCHAR(225),
	_alexa INT(11),
	_country VARCHAR(225)
)
BEGIN
	INSERT INTO  websites(id,name,url,alexa,country)
	VALUES(_id,_name,_url,_alexa,_country);
END;
-- 調用
CALL ADD_websites(9,'日報','hwww.xxoo.x','122','CN');

-- 修改信息
-- 根據id修改信息
DROP PROCEDURE IF EXISTS UPDATE_websites
CREATE PROCEDURE UPDATE_websites(
	_id INT(11),
	_name VARCHAR(225),
	_url VARCHAR(225),
	_alexa INT(11),
	_country VARCHAR(225)
)
BEGIN
	UPDATE websites SET `name`=_name,url=_url, alexa=_alexa,country=_country  WHERE id=_id;
END;
-- 執行調用
CALL UPDATE_websites(9,'東準','ww12w.21232.com',100,'CN')


-- 根據id刪除某條記錄
DROP PROCEDURE IF EXISTS DELETE_websites;
CREATE PROCEDURE DELETE_websites( _id INT )
BEGIN
	DELETE FROM websites WHERE id=_id;
END;
-- 測試
CALL DELETE_websites(9);



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章