1. 程式人生 > >SQLSERVER儲存過程入門與提高

SQLSERVER儲存過程入門與提高

什麼是儲存過程呢?
定義:
將常用的或很複雜的工作,預先用SQL語句寫好並用一個指定的名稱儲存起來, 那麼以後要叫資料庫提供與已定義好的儲存過程的功能相同的服務時,只需呼叫execute,即可自動完成命令。

講到這裡,可能有人要問:這麼說儲存過程就是一堆SQL語句而已啊?

Microsoft公司為什麼還要新增這個技術呢?

那麼儲存過程與一般的SQL語句有什麼區別呢?

儲存過程的優點:

1.儲存過程只在創造時進行編譯,以後每次執行儲存過程都不需再重新編譯,而一般SQL語句每執行一次就編譯一次,所以使用儲存過程可提高資料庫執行速度。

2.當對資料庫進行復雜操作時(如對多個表進行Update,Insert,Query,Delete時),可將此複雜操作用儲存過程封裝起來與資料庫提供的事務處理結合一起使用。

3.儲存過程可以重複使用,可減少資料庫開發人員的工作量

4.安全性高,可設定只有某此使用者才具有對指定儲存過程的使用權

儲存過程的種類:

1.系統儲存過程:以sp_開頭,用來進行系統的各項設定.取得資訊.相關管理工作,

如 sp_help就是取得指定物件的相關資訊

2.擴充套件儲存過程 以XP_開頭,用來呼叫作業系統提供的功能

exec master..xp_cmdshell 'ping 10.8.16.1'

3.使用者自定義的儲存過程,這是我們所指的儲存過程

常用格式

Create procedure procedue_name

[@parameter data_type][output]

[with]{recompile|encryption}

as

sql_statement

解釋:

output:表示此引數是可傳回的

with {recompile|encryption}

recompile:表示每次執行此儲存過程時都重新編譯一次

encryption:所建立的儲存過程的內容會被加密

如:

表book的內容如下

編號 書名 價格

001 C語言入門 $30

002 PowerBuilder報表開發 $52

例項1:查詢表Book的內容的儲存過程

create proc query_book

as

select * from book

go

exec query_book

例項2:加入一筆記錄到表book,並查詢此表中所有書籍的總金額

Create proc insert_book

@param1 char(10),@param2 varchar(20),@param3 money,@param4 money output

with encryption ---------加密

as

insert book(編號,書名,價格) Values(@param1,@param2,@param3)
select @param4=sum(價格) from book
go

執行例子:
declare @total_price money
exec insert_book '003','Delphi 控制元件開發指南',$100,@total_price
print '總金額為'+convert(varchar,@total_price)
go

儲存過程的3種傳回值:
1.以Return傳回整數
2.以output格式傳回引數
3.Recordset

傳回值的區別:
output和return都可在批次程式中用變數接收,而recordset則傳回到執行批次的客戶端中

例項3:設有兩個表為Product,Order,其表內容如下:
Product
產品編號 產品名稱 客戶訂數
001 鋼筆 30
002 毛筆 50
003 鉛筆 100
Order
產品編號 客戶名 客戶訂金
001 南山區 $30
002 羅湖區 $50
003 寶安區 $4
請實現按編號為連線條件,將兩個表連線成一個臨時表,該表只含編號.產品名.客戶名.訂金.總金額,
總金額=訂金*訂數,臨時表放在儲存過程中

程式碼如下:
Create proc temp_sale
as
select a.產品編號,a.產品名稱,b.客戶名,b.客戶訂金,a.客戶訂數* b.客戶訂金 as總金額
into #temptable from Product a inner join Order b on a.產品編號=b.產品編號
if @@error=0
print 'Good'
else
print 'Fail'
go  

相關推薦

SQLSERVER儲存過程入門提高

什麼是儲存過程呢? 定義: 將常用的或很複雜的工作,預先用SQL語句寫好並用一個指定的名稱儲存起來, 那麼以後要叫資料庫提供與已定義好的儲存過程的功能相同的服務時,只需呼叫execute,即可自動完成命令。 講到這裡,可能有人要問:這麼說儲存過程就是一堆SQL語句而已啊? Microsoft公司為什麼還要新增

SqlServer儲存過程的建立使用

什麼是儲存過程? T-SQL中的儲存過程,非常類似於net語言中的方法,它可以重複呼叫。當儲存過程執行一次後,可以將語句快取中,這樣下次執行的時候直接使用快取中的語句。 這樣就可以提高儲存過程的效能。  儲存過程Procedure是一組為了完成特定功能的SQL語句集合,經編譯後儲存在資料庫中,使

最新 angular 5 入門提高

強調 pmod 團隊 jit編譯器 瀏覽器支持 lar 等待時間 not 手機桌面 一、概述 盡管被稱為Angular5,實際上它只是這個誕生於2012年的前端框架的的第四個版本: 看起來差不多半年就發布一個新版本,不過實際上從重寫的版本2開始,開發 接口與核心思想就穩定

OpenAI Gym 入門提高(一) Gym環境構建最簡單的RL agent

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

sqlserver儲存過程/遊標及例項

--系統儲存過程exec sp_databases --檢視系統資料庫exec sp_tables --檢視系統表exec sp_rename 'aaa','bbb' --修改表明aaa為bbbexec sp_rename 'dbo.aaa','col1','col2' --修改表aaa的列col1為col2

SQLSERVER儲存過程的基本語法例項

SQLSERVER儲存過程的基本語法例項 SQLSERVER儲存過程的基本語法例項 一、定義變數--簡單賦值 declare @a intset @a=5 print @a --使用select語句賦值 declare @user1 nvarchar(50) select @user1='張三'prin

mybatis 呼叫sqlserver 儲存過程

<select id="testStoredProcedure" statementType="CALLABLE" resultMap="TestMap"> <![CDATA[ {call AllNewcourse(${shopid},${cours

檢視、索引、儲存過程簡述優缺點

1.檢視 (1).什麼是檢視? 檢視(View)作為一種資料庫物件,為使用者提供了一個可以檢索資料表中的資料方式。使用者通過檢視來瀏覽資料表中感興趣的部分或全部資料,而資料的物理儲存位置仍然在表中。 檢視是一個虛擬表,並不代表任何物理資料,只是用來檢視資料的視窗而已。檢視並不是以一組資料的形式儲存在

sqlserver儲存過程實現資料批量刪除--分割字串實現

寫的儲存過程,接收的引數的一個字串,通過分割字串從而實現批量刪除。 IF (@operation = 'delete') BEGIN DECLARE @temp nvarchar(200) DECLARE @splitchar nvarchar(1) SET

【mybatis】mybatis呼叫sqlserver儲存過程和表值函式

儲存過程和表值函式的區別 最簡單的區別是儲存過程是pr開頭的,而儲存過程是fn開頭的,表值函式返回的是一個表結構的結果。如果mybatis用呼叫儲存過程的方式去呼叫表值函式,就會丟擲以下的異常: exc

【轉載】Qt入門提高:K02-01通過簡單exe介紹pro基本配置

版權宣告 --------------------------------------------------------------------------------------------------------------------- 作者: 女兒叫老白

sqlserver儲存過程

儲存過程 Transact-SQL中的儲存過程,非常類似於Java語言中的方法,它可以重複呼叫。當儲存過程執行一次後,可以將語句快取中,這樣下次執行的時候直接使用快取中的語句。這樣就可以提高儲存過程的效能。 儲存過程的概念 儲存過程Procedure是一組為了完

Qt入門提高:K02-03加點料-增加一張圖片

版權宣告 --------------------------------------------------------------------------------------------------------------------- 作者: 女兒叫老白

Qt入門提高:ks02-04 pro 檔案常用配置

版權宣告 --------------------------------------------------------------------------------------------------------------------- 作者: 女兒叫老白

Qt入門提高:KS04_07 常用Qt類-QMap

版權宣告 --------------------------------------------------------------------------------------------------------------------- 作者: 女兒叫老白

根據 關鍵字 搜尋 sqlserver儲存過程

SQL SERVER  非常好用的根據某個關鍵字查儲存過程: select *  from sys.all_sql_modules   where definition like '%wxface%'

《數學建模競賽入門提高》讀書筆記

第1章:數學建模概述        近半個多世紀以來,數學已經走進了各大領域,而與其他學科相結合形成交叉學科,首要的關鍵一步就是建立研究物件的數學模型,並加以計算求解,數學建模和計算機技術在知識經濟時代的作用可謂是如虎添翼。 1.1  初入門徑——認識數學模型與數學

2015 數學建模競賽 入門提高 讀書筆記

《數學建模競賽入門與提高》 第1章:數學建模概述        近半個多世紀以來,數學已經走進了各大領域,而與其他學科相結合形成交叉學科,首要的關鍵一步就是建立研究物件的數學模型,並加以計算求解,數學建模和計算機技術在知識經濟時代的作用可謂是如虎添翼。 1.1  初入門徑

SQLServer-儲存過程

儲存過程 一、定義變數 --簡單賦值 declare @a int set @a=5 print @a --使用select語句賦值 declare @user1 nvarchar(50) select @user1='張三' print @user1 declar

Mysql 儲存過程入門

本文參考:https://blog.csdn.net/a__yes/article/details/52795793