99热99这里只有精品6国产,亚洲中文字幕在线天天更新,在线观看亚洲精品国产福利片 ,久久久久综合网

歡迎加入QQ討論群258996829
麥子學院 頭像
蘋果6袋
6
麥子學院

mysql存儲過程學習教程

發(fā)布時間:2016-08-27 23:23  回復:0  查看:2387   最后回復:2016-08-27 23:23  

Mysql存儲過程是我們學習Mysql的重要知識點,這篇文章主要給大家講解一下創(chuàng)建存儲的過程是怎樣的。

 

1、我們?yōu)槭裁匆么鎯^程呢 ?

我們都知道應用程序分為兩種,一種是基于web,一種是基于桌面,他們都和數(shù)據(jù)庫進行交互來完成數(shù)據(jù)的存取工作。假設現(xiàn)在有一種應用程序包含了這兩 種,現(xiàn)在要修改其中的一個查詢sql語句,那么我們可能要同時修改他們中對應的查詢sql語句,當我們的應用程序很龐大很復雜的時候問題就出現(xiàn)這,不易維 護!另外把sql查詢語句放在我們的web程序或桌面中很容易遭到sql注入的破壞。而存儲例程正好可以幫我們解決這些問題。

 

2、創(chuàng)建存儲過程

創(chuàng)建存儲過程這塊主要有兩種,一種是帶參數(shù)的,一種是不帶參數(shù)的,先講不帶參數(shù)的再說不帶參數(shù)的

不帶參數(shù)案例:

-- 創(chuàng)建存儲過程

delimiter //        --自定義語句結(jié)尾符號,因為這里要執(zhí)行好多句sql語句,所以就得自定義,以防止出錯

create procedure p1()

BEGIN

    select * from tab1;

END//

delimiter ;         --自定義局域結(jié)尾符號結(jié)束

 

-- 執(zhí)行存儲過程

call p1()

帶參數(shù)案例這塊主要有三個類

in          僅用于傳入?yún)?shù)用

out        僅用于返回值用

inout     既可以傳入又可以當作返回值

-- 創(chuàng)建存儲過程

delimiter \\

create procedure p1(

    in i1 int,                        -- 傳入?yún)?shù)i1

    in i2 int,                        -- 傳入?yún)?shù)i2

    inout i3 int,                     -- 即傳入又能得到返回值

    out r1 int                        -- 得到返回值

)

BEGIN

    DECLARE temp1 int;

    DECLARE temp2 int default 0;  

    set temp1 = 1;

    set r1 = i1 + i2 + temp1 + temp2;

    set i3 = i3 + 100;

end\\

delimiter ;

 

-- 執(zhí)行存儲過程

DECLARE @t1 INT default 3;           --  設置變量默認值為3

DECLARE @t2 INT;                     --  設置變量

CALL p1 (1, 2 ,@t1, @t2);            --  執(zhí)行存儲過程,并傳入?yún)?shù),t2自動取消

SELECT @t1,@t2;                      --  查看存儲過程輸出結(jié)果

2、刪除存儲過程

drop procedure p1;

3、pythonpymysql模塊調(diào)用存儲過程,因為我們學習這些就是為了語言調(diào)用

#!/usr/bin/env python

# -*- coding:utf-8 -*-

import pymysql

 

conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='', db='day39b_')

cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

# 執(zhí)行存儲過程

row = cursor.callproc('p1',(1,2,3))

# 存儲過程的查詢結(jié)果

selc = cursor.fetchall()

print(selc)

# 獲取存儲過程返回

effect_row = cursor.execute('select @_p1_0,@_p1_1,@_p1_2')

# 曲存儲過程的返回值

ret = cursor.fetchone()

print(ret)

# 提交,不然無法保存新建或者修改的數(shù)據(jù)

conn.commit()

# 關閉游標

cursor.close()

# 關閉連接

conn.close()

 

 

 

文章來自:博客園/張巖林

您還未登錄,請先登錄

熱門帖子

最新帖子

?