mysql 存儲(chǔ)過程使用

//轉(zhuǎn)載? http://www.cnblogs.com/zhuawang/p/4185302.html

將下面的語句復(fù)制粘貼可以一次性執(zhí)行完,我已經(jīng)測試過,沒有問題!

MySql存儲(chǔ)過程簡單實(shí)例:

/********************* 創(chuàng)建表 *****************************/

delimiter //

DROP TABLE if exists test //

CREATE TABLE test(

id int(11) NULL

) //

/********************** 最簡單的一個(gè)存儲(chǔ)過程 **********************/

drop procedure if exists sp//

CREATE PROCEDURE sp() select 1 //

call sp()//

/********************* 帶輸入?yún)?shù)的存儲(chǔ)過程? *******************/

drop procedure if exists sp1 //

create procedure sp1(in p int)

comment 'insert into a int value'

begin

/* 定義一個(gè)整形變量 */

declare v1 int;

/* 將輸入?yún)?shù)的值賦給變量 */

set v1 = p;

/* 執(zhí)行插入操作 */

insert into test(id) values(v1);

end

//

/* 調(diào)用這個(gè)存儲(chǔ)過程? */

call sp1(1)//

/* 去數(shù)據(jù)庫查看調(diào)用之后的結(jié)果 */

select * from test//

/****************** 帶輸出參數(shù)的存儲(chǔ)過程 ************************/

drop procedure if exists sp2 //

create procedure sp2(out p int)

/*這里的DETERMINISTIC子句表示輸入和輸出的值都是確定的,不會(huì)再改變.我一同事說目前mysql并沒有實(shí)現(xiàn)該功能,因此加不加都是NOT DETERMINISTIC的*/

DETERMINISTIC

begin

select max(id) into p from test;

end

//

/* 調(diào)用該存儲(chǔ)過程,注意:輸出參數(shù)必須是一個(gè)帶@符號(hào)的變量 */

call sp2(@pv)//

/* 查詢剛剛在存儲(chǔ)過程中使用到的變量 */

select @pv//

/******************** 帶輸入和輸出參數(shù)的存儲(chǔ)過程 ***********************/

drop procedure if exists sp3 //

create procedure sp3(in p1 int , out p2 int)

begin

if p1 = 1 then

/* 用@符號(hào)加變量名的方式定義一個(gè)變量,與declare類似 */

set @v = 10;

else

set @v = 20;

end if;

/* 語句體內(nèi)可以執(zhí)行多條sql,但必須以分號(hào)分隔 */

insert into test(id) values(@v);

select max(id) into p2 from test;

end

//

/* 調(diào)用該存儲(chǔ)過程,注意:輸入?yún)?shù)是一個(gè)值,而輸出參數(shù)則必須是一個(gè)帶@符號(hào)的變量 */

call sp3(1,@ret)//

select @ret//

/***************** 既做輸入又做輸出參數(shù)的存儲(chǔ)過程 ***************************************/

drop procedure if exists sp4 //

create procedure sp4(inout p4 int)

begin

if p4 = 4 then

set @pg = 400;

else

set @pg = 500;

end if;

select @pg;

end//

call sp4(@pp)//

/* 這里需要先設(shè)置一個(gè)已賦值的變量,然后再作為參數(shù)傳入 */

set @pp = 4//

call sp4(@pp)//

/********************************************************/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 任務(wù)需求:定時(shí)執(zhí)行的任務(wù),調(diào)用存儲(chǔ)過程,進(jìn)行數(shù)據(jù)遷移。 存儲(chǔ)過程相關(guān)總結(jié):(存儲(chǔ)過程的創(chuàng)建 不能伴隨有if exi...
    時(shí)待吾閱讀 3,206評(píng)論 0 4
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,652評(píng)論 18 399
  • 什么是SQL數(shù)據(jù)庫: SQL是Structured Query Language(結(jié)構(gòu)化查詢語言)的縮寫。SQL是...
    西貝巴巴閱讀 1,996評(píng)論 0 10
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 4,011評(píng)論 0 11
  • mysql 高級(jí)語句 一、存儲(chǔ)過程 1.什么是存儲(chǔ)過程: 就是一組SQL語句集,功能強(qiáng)大,可以實(shí)現(xiàn)一些比較復(fù)雜的邏...
    君滿樓001閱讀 3,289評(píng)論 0 0

友情鏈接更多精彩內(nèi)容