儲存過程--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(具有特殊功能) 但是不想寫固定引數值,這時候就該用到儲存過程.
例如第二個例子, 遞迴查詢+動態引數