MySql預存程序

來源:互聯網
上載者:User
簡介:一個預存程序包括名字,參數列表,以及可以包括很多SQL語句的SQL語句集。

一個預存程序包括名字,參數列表,以及可以包括很多SQL語句的SQL語句集。

建立預存程序:

文法:

CREATE PROCEDURE p()

 BEGIN

 /*此預存程序的本文*/

 END

CREATE PROCEDURE productpricing()

 BEGIN

   SELECT Avg(pro_price) AS priceaverage

   FROM products;

 END;

# begin…end之間是預存程序的主體定義

# mysql的分界符是分號(;)

                        

調用預存程序的方法是:

# CALL加上過程名以及一個括弧

# 例如調用上面定義的預存程序

CALL productpricing();

# 哪怕是不用傳遞參數,預存程序名字後面的括弧“()”也是必須的

刪除預存程序的方法是:

DROP PROCUDURE productpricing;

建立帶參數的預存程序:

CREATE PROCUDURE productpricing(

OUT p1 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;

# DECIMAL用於指定參數的資料類型

# OUT用於表明此值是用於從預存程序裡輸出的

# MySQL支援 OUT, IN, INOUT

調用帶參數的預存程序:

CALL productpricing(@pricelow,

                    @pricehigh,

                    @priceaverage); 

# 所有的參數必須以@開頭

# 要想擷取@priceaverage的值,用以下語句

SELECT @priceaverage;

# 擷取三個的值,用以下語句

SELECT @pricehigh, @pricelow, @priceaverage;

另一個帶IN和OUT參數的預存程序:

CREATE PROCEDURE ordertotal(

   IN onumber INT,

   OUT ototal DECIMAL(8,2)

)

BEGIN

   SELECT Sum(item_price*quantity)

   FROM orderitems

   WHERE order_num = onumber

   INTO ototal;

END;

CALL ordertotal(20005, @total);

SELECT @total;

 添加一個完整的例子:
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.