-- ######存儲過程##
-- 存儲在數據庫服務器中的一組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);