**1. 存儲過程與函數的區別:**
1. 一般來說,存儲過程實現的功能要復雜一點,而函數實現的功能針對性比較強。
2. 當對數據庫進行復雜操作時(如對多個表進行Update、Insert、Select、Delete時),可將此復雜操作用存儲過程封裝起來與數據庫提供的事務處理結合一起使用。存儲過程可以從自己的存儲過程內引用其它存儲過程,這可以簡化一系列復雜語句。
3. 存儲過程一般是作為一個獨立的部分來執行,而函數可以作為查詢語句的一個部分來調用,由于函數可以返回一個表對象,因此函數可以用在查詢語句中位于FROM關鍵字的后面。
4. 存儲過程只在創造時進行編譯,以后每次執行存儲過程都不需再重新編譯,而一般SQL語句每執行一次就編譯一次,所以使用存儲過程可提高數據庫執行速度。
5. 存儲過程可以有多個返回值,可以返回錯誤原因。但函數只能返回一個特定類型的值或者表對象。
6. 存儲過程中的CRUD操作會影響數據庫狀態,但函數卻不能。
7. 函數參數類型默認且只能是`in`類型,而存儲過程有 `in`、`out`、`inout`3種類型。
8. 函數必須有`return`語句,而存儲過程不能有`renturn`語句。
**2. 函數特點**
1. 可以與Select語句一起使用。
2. 不返回輸出參數,但返回表變量。
3. 你可以在函數內調用自定義函數。
4. 無法用于更改服務器配置。
5. 不能與XML FOR子句一起使用。
6. 函數中不能有事務。
**3.存儲過程特點**
1. 必須使用EXEC或EXECUTE。
2. 可以返回輸出參數。
3. 可以建表,但不能返回表變量。
4. 存儲過程內不能調用系統存儲過程。
5. 可用于更改服務器配置。
6. 可以與XML FOR子句一起使用。
7. 可以在存儲過程內進行事務處理。
- MySQL
- MySQL是什么
- MySQL環境搭建
- centos7-MySQL8
- windows-MySQL8
- 數據庫軟件
- sqlyog軟件安裝
- navicat軟件安裝
- powerDesigner軟件安裝
- RDBMS術語
- SQL語句組成
- 數據庫系統組成
- 數據庫操作
- 數據表操作
- 查詢語句
- 基本語法
- 子查詢
- 表連接
- 查詢語句執行順序
- 事務
- 事務是什么
- 事務的作用
- 事務的4個特性
- 事務隔離級別
- 事務的實現
- 索引
- 索引的作用
- 索引操作
- 存儲引擎
- 備份與恢復
- 視圖
- 視圖是什么
- 視圖的作用
- 創建視圖
- 查看視圖
- 更改視圖
- DML操作視圖
- 刪除視圖
- 存儲過程與函數
- 過程與函數是什么
- 存儲過程操作
- 定義存儲過程
- 調用存儲過程
- 查看存儲過程
- 刪除存儲過程
- 修改存儲過程
- 函數操作
- 過程與函數區別
- 流程控制
- if語句
- case語句
- while循環語句
- repeat循環語句
- loop循環語句
- 變量
- 處理程序
- 光標
- Redis
- 簡介
- 下載與安裝
- 命令操作redis數據庫
- 通用命令
- 數據操作
- 持久化
- Windows上的持久化操作
- 數據庫設計
- 數據庫設計過程
- ER模型圖
- MongoDB
- MongoDB是什么?
- MongoDB特性
- MongoDB 數據模型
- 安裝MongoDB
- MongoDB認證
- Database操作
- Collection操作
- Document操作
- 插入
- 查詢
- 更新
- 刪除
- buckWrite
- MongoDB索引
- 副本集
- 聚焦分析
- 事務管理
- 寫關注
- 讀關注