数据库系列之T-SQL(存储过程)
什么是存儲過程
存儲過程是保存在數據庫的函數,可以被應用程序或其它存儲過程調用。
存儲過程有什么用
用于實現業務邏輯(特別是需要事務的業務)。
1 優點
減少網絡通信量
執行速度更快
更強的適應性(有時候發布系統無需更新客戶端)
分布式工作
減少客戶端的負荷
2 缺點
增加服務器的負荷
?
常用的系統存儲過程
系統存儲過程??? 說明
sp_help??? 用于查看對象信息
sp_helpdb??? 用于查詢數據庫的信息
sp_helpconstraint??? 查看某個表的約束
sp_helpindex??? 查看某個表的索引
sp_databases??? 用于顯示所有數據庫的信息,如數據庫名和數據大小。
sp_renamedb??? 更改數據庫的名稱
Sp_rename??? 用于在當前數據庫更改用戶創建的對象名稱,如數據表、字段、索引等
sp_tables??? 返回當前數據庫中數據表和視圖
sp_columns??? 返回某個數據表或視圖的列信息
sp_password??? 添加或修改登錄帳戶的密碼
調用系統存儲過程
exec sp_databases? --列出當前系統中的所有數據庫
use booksmanager
go
exec sp_tables? --列出數據庫booksmanager中所有數據表和視圖
exec sp_columns books --列出圖書表的列信息
exec sp_help books --查看圖書表的所有信息
exec sp_helpconstraint books --查看圖書表的約束
exec sp_helpindex books --查看圖書表的索引
擴展存儲過程
擴展存儲過程(Extended? stored? procedured)是對動態鏈接庫(DLL)函數的調用。
擴展存儲過程通常是以“XP_”為前綴。
用戶自定義存儲過程
1 不帶參數的存儲過程
(1)語法
CREATE? PROCEDURE? 存儲過程名
AS
? ………
? ………
? ………
建議:自定義存儲過程的名稱最好以USP_開頭
(2)調用帶輸入參數的存儲過程
EXEC? 存儲過程名
2 帶參數的存儲過程
(1)語法
CREATE? PROCEDURE? 存儲過程名
??? @參數1? 數據類型 [=默認值],
???? ……
??? @參數n? 數據類型 [=默認值]
AS
? ………
? ………
? ………
(2)調用帶輸入參數的存儲過程
方式一:
exec usp_score_byparam 'SQL Server基礎編程',70
方式二:
exec usp_score_byparam @coursename='SQL Server基礎編程' ,@pass=70
3 帶輸出參數的存儲過程
(1)語法
CREATE? PROCEDURE? 存儲過程名
??? @參數1? 數據類型 [=默認值],
???? ……
??? @參數n? 數據類型 OUTPUT
AS
? ………
? ………
? ………
(2)調用帶輸出參數的存儲過程
declare @result? int
exec usp_ADD 20,30,@result output
print '運算結果:'+str(@result,5)
轉載于:https://www.cnblogs.com/cmhunter/p/4299875.html
總結
以上是生活随笔為你收集整理的数据库系列之T-SQL(存储过程)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: POJ 1637 Sightseeing
- 下一篇: Mysql分组合并函数并进行数据列处理