MySQL儲存過程/儲存過程與自定義函式的區別
儲存過程:
簡單的說,就是一組SQL語句集,功能強大,可以實現一些比較複雜的邏輯功能,類似於JAVA語言中的方法;
ps:儲存過程跟觸發器有點類似,都是一組SQL集,但是儲存過程是主動呼叫的,且功能比觸發器更加強大,觸發器是某件事觸發後自動呼叫;
有哪些特性:
有輸入輸出引數,可以宣告變數,有if/else, case,while等控制語句,通過編寫儲存過程,可以實現複雜的邏輯功能;
函式的普遍特性:模組化,封裝,程式碼複用;
速度快,只有首次執行需經過編譯和優化步驟,後續被呼叫可以直接執行,省去以上步驟;
建立一個簡單的儲存過程:
delimiter--修改預設結束符
其中IN表示輸入引數,OUT表示輸出引數,INOUT
param_name表示引數名稱;type表示引數的型別
delimiter // CREATE PROCEDURE aff_order_pro(IN username CHAR(20) , IN pwd CHAR(32) , OUT insert_result TINYINT) BEGIN DECLARE user_id INT; DECLARE user_info_id INT; INSERT into `user`(user_name) VALUES(user_name); //新增使用者表 SET user_id = LAST_INSERT_ID(); //獲取上一次操作的id INSERT INTO `user_info`(user_id,address)VALUE(user_id,address); //新增使用者詳情表 SET user_info_id = LAST_INSERT_ID(); if user_id and use_info_id THEN SELECT 1 into insert_result; ELSE SELECT 0 INTO insert_result; END if; END // delimiter ;
建立成功:
呼叫:
call insert_user_procedure('zhangsan','beijing',@insert_result); //呼叫建好的儲存過程
select @insert_result as insert_result; //輸出結果
儲存過程修改:
ALTER語句修改儲存過程只能修改儲存過程的註釋等無關緊要的東西,不能修改儲存過程體,所以要修改儲存過程,方法就是刪除重建!
刪除儲存過程:
DROP PROCEDURE [IF EXISTS] sp_name
建立無參儲存過程:
delimiter // CREATE PROCEDURE showTime()BEGINSELECT now();END// delimiter ; CALL showTime;
作用:顯示當前時間,沒什麼實際意義
儲存過程與自定義函式的區別:
儲存過程實現的過程要複雜一些,而函式的針對性較強;
儲存過程可以有多個返回值,而自定義函式只有一個返回值;
儲存過程一般獨立的來執行,而函式往往是作為其他SQL語句的一部分來使用;
儲存過程存在的必要性(好處):
儲存過程說白了就是把經常使用的SQL語句或業務邏輯封裝起來,預編譯儲存在資料庫中,當需要的時候從資料庫中直接呼叫,省去了編譯的過程.
提高了執行速度;
同時降低網路資料傳輸量(你覺得傳一堆SQL程式碼快,還是傳一個儲存過程名字和幾個引數快???)
相關推薦
Mysql中儲存過程與自定義函式的區別
建立儲存過程: CREATE [definer = {user|current_user}] PROCEDURE sp_name ([ proc_parameter [,proc_parameter ...]]) [ characteristi
MySQL儲存過程/儲存過程與自定義函式的區別
儲存過程:簡單的說,就是一組SQL語句集,功能強大,可以實現一些比較複雜的邏輯功能,類似於JAVA語言中的方法;ps:儲存過程跟觸發器有點類似,都是一組SQL集,但是儲存過程是主動呼叫的,且功能比觸發器更加強大,觸發器是某件事觸發後自動呼叫;有哪些特性:有輸入輸出引數,可以宣
第二課:程式結構化與自定義函式
目標: 學會寫matlab指令碼。 編寫結構化程式。 編寫使用者自定義函式。 一、編寫matlab指令碼 MATLAB Script: 一個檔案包含一系列matlab命令 類似於c/c++程式 指令碼儲存為<file>.m檔案,這樣就可以執行這樣以.
連結與自定義函式名同名的庫函式
遇到一個問題: 封裝SQLite3成靜態庫,過程中發現SQLite3的原始碼的shell.c中有main函式: int SQLITE_CDECL main(int argc, char **argv){ char *zErrMsg = 0; She
JavaScript全域性函式與自定義函式-Functions
全域性屬性和函式可用於所有內建的 JavaScript 物件。我們經常會用到一些內建的全域性函式如parseInt();parseFloat()等等,另外我們可以根據自己的業務需要編寫自己的函式。 全域性函式 全域性物件描述 全域性物件是預定義的物件,作為 JavaS
初學mysql(十)-資料庫之儲存過程、函式與遊標-自定義函式和流程控制(下)
上一篇部落格講了儲存過程、函式、以及遊標,這一篇部落格接著上一篇部落格來說。首先說說mysql資料庫中的流程控制及自定義函式的使用。 自定義函式: 根據所需要的功能,使用流程控制來完成所需要的功能,完成功能的程式碼就稱為自定義函式。要想完成自定義函式就必須學會流程控制的使
學會使用MySQL中自定義函式和儲存過程
一、快速瞭解什麼是儲存過程和函式? 儲存過程和函式是事先經過編譯並存儲在資料庫中的一段 SQL 語句的集合,呼叫儲存過程 和函式可以簡化應用開發人員的很多工作,減少資料在資料庫和應用伺服器之間的傳輸,對 於提高資料處理的效率是有好處的。 在對儲存過程或函式進行操作時,需要
MySQL自定義函式和儲存過程的區別:
自定義函式和儲存過程的區別: 1)一般來說,儲存過程實現的功能要複雜一點,而函式的實現的功能針對性比較強。儲存過程,功能強大,可以執行包括修改表等一系列資料庫操作;使用者定義函式不能用於執行一組修改全域性資料庫狀態的操作。 2)對於儲存過程來說可以返回引數,如記錄集,而函式只能返回值或者表物件。函式只能
MySql 自定義函式,儲存過程,遊標的使用
首先整理一下mysql內建的一些函式 MySQL內建函式 一、字元函式 (1)CONCAT()//字元連線 (2)CONCAT_WS()//使用指定的分隔符進行字元連線 (3)FORMAT()//數字格式化 (4)LOWER()//轉化小寫 (
MySQL 第八篇:自定義函式、儲存過程、遊標
本篇內容由猿道教育的課程內容整理而來。 我把MySQL的內容整理成9篇部落格,學完這9篇部落格雖不能說能成為大神,但是應付一般中小企業的開發已經足夠了,有疑問或建議的歡迎留言討論。 自定義函式 一、函式的概念與定義 1、理解函式 函式可以看作是
儲存過程與使用者自定義函式(SQL SERVER)
聯絡 二者本質上沒有什麼區別。當儲存過程和函式被執行的時候,SQL Manager會到procedure cache中去取相應的查詢語句,如果在procedure cache裡沒有相應的查詢語句,SQL Manager就會對儲存過程和函式進行編譯。Pr
SQl中的UDF(使用者自定義函式)與儲存過程的區別、優點
UDF定義: 和儲存過程很類似,使用者自定義函式是一組有序的T_SQL語句,這些語句被預先優化和編譯,並且可以作為一個單元來進行呼叫。UDF和儲存過程的主要區別在於結果的返回方式。為了能支援多種的不同的返回值,UDF比儲存過程有更多的限制。 UDF和儲存過程的具體區別: 儲
MySQL儲存過程和自定義函式、Navicat for mysql、建立儲存過程和函式、呼叫儲存過程和函式的區別
與你相遇 好幸運 可我已失去為你淚流滿面的權利 但願在我看不到的天際 你張開了雙翼 1 MySQL儲存過程和函式 過程和函式,它們被編譯後儲存在資料庫中,稱為永續性儲存模組(Persistent Stored Module,PSM),可以反覆呼叫,執行速度快。 1.1 儲存過程 儲存過程是由
MySQL利用自定義函式和儲存過程建立海量表,並使用索引優化
昨天學習韓順平老師的視訊時明白了上一章explain的意義,為了自己的聯絡,我學著建立了一個海量表,供自己練習使用。 程式碼如下: #建立表DEPT CREATE TABLE dept( /*部門表*/ deptno MEDIUMINT UN
MySQL觸發器、儲存過程、自定義函式、檢視 常用SQL
1.建立一個userinfo表新增記錄時的觸發器 將新增日誌加入到userinfolog 2.建立一個向userinfo表新增記錄的儲存過程 3.根據userinfo表的出生日期欄位 我們將建立一個簡單算得年齡的自定義函式 4.建立一個userinfo的檢視 呼叫年齡函式
MySQL存儲過程/存儲過程與自定義函數的區別
toolbar 基本 value reg pan lba tin 進行 只為 ---------------------------存儲過程-------------------- 語法: 創建存儲過程: CREATE [definer = {user|current
儲存過程和自定義函式的優缺點
儲存過程和使用者定義函式都是“SQL語句組成的子程式,用以封裝程式碼以便重複使用”。但區別也是顯而易見的。簡單說,儲存過程功能強大,但呼叫不便,使用者函式正相反。 使用者定義函式的優點: 可以在SQL語句中呼叫,直接使用返值,從而形成複雜的SQL應用。 儲存過程則只能用ex
儲存過程、觸發器和使用者自定義函式實驗 (儲存過程)
儲存過程、觸發器和使用者自定義函式實驗 實驗內容一 練習教材中儲存過程、觸發器和使用者自定義函式的例子。教材中的BookSales資料庫,在群共享中,檔名為BookSales.bak。 實驗內容二 針對附件1中的教學活動資料庫,完成下面的實驗內容。 1、儲存過程 (
Hive中建立和呼叫儲存過程及自定義函式
前面的文章《在Hive中實現儲存過程–HQL/SQL》中介紹瞭如何使用HPL/SQL在Hive中實現儲存過程,執行類似Oracle PL/SQL的功能。 一般的業務場景是資料開發人員開發好一個儲存過程,然後週期性的呼叫,傳入不同的引數即可。 本文繼續介紹如何在Hive中利
oracle儲存過程及自定義函式(儲存函式)初學
1.儲存過程和儲存函式的主要區別 儲存函式可以通過return返回函式值;儲存函式可以在SQL語句內部呼叫;儲存函式較儲存過程有諸多限制;儲存過程用select語句返回記錄集,儲存函式使用表變數返回記錄集。 2.儲存過程和儲存函式的建立 儲存過程的