定義
一個復雜邏輯對SQL語句的批量處理,
通過一個名字存儲
創建
delimiter // 修改終止符
-- 存儲過程沒有返回值
delimiter // ---- 把終止符;修改成//
create procedure porc2()
begin
-- 可執行語句
insert into mm_users values (0,'xiaownag','xxx');
select * from mm_users;
end
// ---- 填寫終止符
delimiter ; ---- 還原原來的終止符以執行
查看
-- 查看 mysql.proc
select db,name,type from mysql.proc;
調用
-- 調用 如果存儲過程沒有參數 小括號可以省略
call proc();
--在pymysql中執行存儲過程
cursor.callproc('存儲對象名')
刪除
-- 刪除
drop procedure proc_stu;
delete from mysql.proc where name = 'porc1';
- 存儲過程和函數的區別
- 課件
-- 函數在使用時候有哪些限制
-- select 語句不能夠在函數中執行
-- 函數中除 select into之外其他的 select 語句都不能夠執行
-- select into 是將查詢的結果賦值給某一個變量
delimiter //
create function f4(in a int,in b int) returns int
begin
-- 定義一個變量 res
declare res int default 0;
-- 將 a + b的結果賦值給 res
select count(*) from mm_users into res;
-- set res = a + b;
-- 返回 res
return res;
end
//
delimiter ;
-- 通過存儲過程來實現函數中不能夠調用 select 語句的弊端
-- 但是存儲過程沒有返回值
-- 可以通過 out 類型的參數來給存儲過程實現多個返回值的功能
- 相同點
相同點
存儲過程和函數都是為了可重復的執行操作數據庫的 sql 語句的集合.
存儲過程和函數都是一次編譯,就會被緩存起來,
下次使用就直接命中緩存中已經編譯好的 sql,
不需要重復編譯
減少網絡交互,減少網絡訪問流量
- 不同點
不同點
標識符不同,函數的標識符是 function, 過程:procedure
函數中有返回值,且必須有返回值,而過程沒有返回值,
但是可以通過設置參數類型(in,out)來實現多個參數或者返回值
函數使用 select 調用,存儲過程需要使用 call 調用
select 語句可以在存儲過中調用,
但是除了 select ... into 之外的 select 語句都不能再函數中調用
通過 in out 參數,過程相關函數更加靈活,可以返回多個結果
在實際開發中根據個人喜好選擇使用函數或者存儲過程
- 參數/返回值
-- 參數的類型
-- in 傳入類型的參數,函數或者存儲過程的參數 默認就是傳入類型的參數
-- out 傳出類型的參數, 給存儲過程實現多個返回值的功能
-- inout 既可以傳入又可以傳出 一般不用 一個參數要表達多個意思,
造成參數的語義不夠清晰 函數的參數的大個數: 1024
procedure p1(
in arg1 int, # 讓存儲過程內部使用
out arg2 varchar(50)
inout arg3 int
)
begin
...
end
@i1 = "alex"
# @il 引用
call p1(1, @i1, @i2) # @設置一個變量@i1= null
另外有需要云服務器可以了解下創新互聯cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
創新互聯自2013年創立以來,先為開化等服務建站,開化等地企業,進行企業商務咨詢服務。為開化企業網站制作PC+手機+微官網三網同步一站式服務解決您的所有建站問題。
當前文章:MySQL--存儲過程-創新互聯
文章起源:http://vcdvsql.cn/article4/cdgeoe.html
成都網站建設公司_創新互聯,為您提供域名注冊、動態網站、網站改版、網站排名、品牌網站設計、網站策劃
廣告
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源:
創新互聯