1. 程式人生 > >儲存過程--sql server版

儲存過程--sql server版

給大家推薦個靠譜的公眾號程式設計師探索之路,大家一起加油

今天和同事交流得知一個技術,叫做儲存過程,第一印象,這麼牛逼!!!

1.概念:

儲存過程(Stored Procedure)是在大型資料庫系統中,一組為了完成特定功能的SQL 語句集,儲存在資料庫中,經過第一次編譯後調
用不需要再次編譯,使用者通過指定儲存過程的名字並給出引數(如果該儲存過程帶有引數)來執行它。儲存過程是資料庫中的一個重要物件。

2.大體結構

舉例說明:

CREATE PROCEDURE order_tot_amt //建立的儲存過程名字

@o_id int,//引數

@p_tot 

int output //輸出值

AS

------------具體執行sql開始----------------

SELECT @p_tot = sum(Unitprice*Quantity)

FROM orderdetails

WHERE [email protected]_id

---------------具體執行sql結束-------------------------

GO

另外例子:

 附贈知識:

資料庫遞迴查詢

with test as(
    SELECT * from hz_river_section a where id = '10001'
    UNION All 
    SELECT a.* from hz_river_section a INNER JOIN test on a.parent_id = test.id
)
SELECT id, parent_id from test

例子:

CREATE PROCEDURE pro_river_section_tree
 @id VARCHAR(100)
AS
BEGIN

with test as(
    SELECT * from hz_river_section a where id = @id
    UNION All 
    SELECT a.* from hz_river_section a INNER JOIN test on a.parent_id = test.id
)
SELECT id, parent_id from test

END

3.總結

我粗暴的理解 就是 你想執行一段sql(具有特殊功能) 但是不想寫固定引數值,這時候就該用到儲存過程.

例如第二個例子, 遞迴查詢+動態引數