[MYSQL -23儲存過程]
儲存過程:為以後的使用而儲存的一條或多條MYSQL語句的集合。可將其視為批檔案,雖然它們的作用不僅限於批處理。
使用儲存過程的理由:
- 通過處理封裝在容易使用的單元中,簡化複雜的操作。
- 保證資料的完整性
- 簡化對變動的管理
- 提高效能。儲存過程比單獨的SQL語句要快。
總結起來,3個主要好處:簡單、安全、高效能
1、使用儲存過程
MySQL儲存過程的執行稱之為呼叫,因此MySQL執行儲存過程的語句為CALL.
CALL 接收儲存過程的名字以及需要傳遞給它的任意引數。
1.1建立儲存過程
#productpricing為儲存過程名稱。
#DELIMITER //告訴命令列實用程式使用//作為新的語句結束分隔符。
DELIMITER //
CREATE PROCEDURE productpricing()
BEGIN
SELECT avg(prod_price) as priceaverage
FROM products;
END //
DELIMITER ;
1.2執行儲存過程。
因為儲存過程實際上是一種函式,所以儲存過程名後需要有()符號。
CALL productpricing()
1.3刪除儲存過程
DROP PROCEDURE productpricing;
1.4使用引數
儲存過程一般不顯示結果,而是把結果返回給你指定的變數。
變數:記憶體中一個特定的位置,用來儲存臨時的資料。所有MYSQL變數都必須以@開始。
DELIMITER //
CREATE PROCEDURE productpricing(
OUT pl DECIMAL(8,2),
OUT ph DECIMAL(8,2),
OUT pa DECIMAL(8,2)
)
BEGIN
SELECT Min(prod_price) INTO pl FROM products;
SELECT Max(prod_price) INTO ph FROM products;
SELECT Avg(prod_price) INTO pa FROM products;
END //
DELIMITER ;
此儲存過程接受3個引數:p1儲存產品的最低價,ph儲存產品的最高價,pa儲存產品的平均價。MYSQL支援IN(傳遞給儲存過程)、OUT(從儲存過程傳出,返回給呼叫者)
- 呼叫儲存過程
CALL productpricing(@pricelow,
@pricehigh,
@priceaverage
);
- 顯示檢索出的產品平均價。
SELECT @priceaverage;
- 另一個例項,變數包括IN,OUT。
DELIMITER //
CREATE procedure ordertotal(
IN onumber INT,
OUT ototal DECIMAL(8,2)
)
BEGIN
SELECT Sum(item_price*quantity) INTO ototal FROM orderitems WHERE order_num=onumber;
END //
DELIMITER ;
CALL ordertotal(20005,@total);
SELECT @total;
3、智慧儲存過程
DELIMITER //
CREATE PROCEDURE ordertotal2(
IN onumber INT,
IN taxable BOOLEAN,
OUT ototal DECIMAL(8,2)
)COMMENT 'Obtain order total,optionally adding tax'
BEGIN
-- Declare variable for total
DECLARE total DECIMAL(8,2);
-- Declare taxrate INDEFUALT 6;
DECLARE taxrate INT DEFAULT 6;
SELECT Sum(item_price*quantity) FROM orderitems WHERE order_num = onumber INTO total;
IF taxable THEN
SELECT total+(total/100*taxrate) INTO total;
END IF;
SELECT total INTO ototal;
END //
DELIMITER ;
CALL ordertotal2(20005,0,@total);
select @total;
CALL ordertotal2(20005,1,@total);
select @total;
4、檢查儲存過程
SHOW CREATE PROCEDURE ordertotal2;
SHOW PROCEDURE STATUS;
相關文章
- 23. 使用MySQL之使用儲存過程MySql儲存過程
- mysql 儲存過程MySql儲存過程
- MySQL---------儲存過程MySql儲存過程
- mysql儲存過程整理MySql儲存過程
- MySQL之儲存過程MySql儲存過程
- mysql如何呼叫儲存過程MySql儲存過程
- Mysql 儲存過程的使用MySql儲存過程
- mySql 儲存過程與函式MySql儲存過程函式
- MySQL 儲存過程和函式MySql儲存過程函式
- mysql儲存過程的引數MySql儲存過程
- Laravel 中使用 MySQL 儲存過程LaravelMySql儲存過程
- MySql資料庫——儲存過程MySql資料庫儲存過程
- MySQL儲存過程和函式MySql儲存過程函式
- MySQL儲存過程 (即函式)MySql儲存過程函式
- mysql和orcale的儲存過程和儲存函式MySql儲存過程儲存函式
- mysql 儲存過程 procedure 批次建表MySql儲存過程
- MySQL儲存過程中如何使用ROLLBACKMySql儲存過程
- Mysql 5.7儲存過程的學習MySql儲存過程
- MySQL--儲存過程與檢視MySql儲存過程
- MySQL儲存過程的建立和使用MySql儲存過程
- MySQL儲存過程語句及呼叫MySql儲存過程
- MySQL入門--儲存過程(PROCEDURE)和儲存函式(FUNCTION)MySql儲存過程儲存函式Function
- MySQL入門系列:儲存程式(三)之儲存過程簡介MySql儲存過程
- MySQL的寫入資料儲存過程MySql儲存過程
- mysql檢視儲存過程show procedure status;MySql儲存過程
- MySQL 儲存過程進行切換表MySql儲存過程
- [MySQL光速入門]015 聊聊儲存過程MySql儲存過程
- mysql多次呼叫儲存過程的問題MySql儲存過程
- MySQL全面瓦解16:儲存過程相關MySql儲存過程
- MySQL自定義函式與儲存過程MySql函式儲存過程
- Mysql儲存過程基礎(案例+程式碼)MySql儲存過程
- Mysql儲存過程中使用多遊標MySql儲存過程
- MySQL-09-mysql 儲存過程入門介紹MySql儲存過程
- Oracle儲存過程乾貨(一):儲存過程基礎Oracle儲存過程
- SQL 儲存過程裡呼叫另一個儲存過程SQL儲存過程
- 儲存過程與儲存函式儲存過程儲存函式
- unidac儲存過程儲存過程
- firedac儲存過程儲存過程
- 呼叫儲存過程儲存過程