sql 存储过程和函数
最近在學(xué)習(xí)數(shù)據(jù)庫,上課過程中總是在許多知識點有或多或少的問題,對于這些問題的產(chǎn)生,大概是由于我聽課習(xí)慣所造成的吧,好啦,廢話不多說,開始今天到主題吧。
首先介紹SQL的存儲過程,先來給它定義,存儲過程是由過程化SQL語句書寫的過程,這個過程經(jīng)過編譯和優(yōu)化后存儲在數(shù)據(jù)庫服務(wù)器中,因此稱它為存儲過程,使用是只需要調(diào)用即可
優(yōu)點:
1、運行效率高,因為它不像解釋執(zhí)行的SQL語句那樣在提出操作請求的時候,才開始進行語法分析和優(yōu)化工作。它提供了在服務(wù)器端快速執(zhí)行SQL語句的有效途徑。
2、存儲過程降低了客戶機和服務(wù)器之間的通信量。如果用到高級語言(php\python) ,應(yīng)該也是可以的降低通信量的。
3、方便維護,有利于集中管理
語法:
CREAETE PROCEDURE? 「? NAME? 」(過程名)?
@ARGUMENT(參數(shù))
AS
<過程化SQL>
存儲過程的執(zhí)行或者調(diào)用:
EXEC NAEM(過程名)? ' @ARGUMENT '
存儲過程的刪除:
drop 過程名
?
數(shù)據(jù)庫編程里的函數(shù)。在這里說的函數(shù)我們也稱為自定義函數(shù),因為是用戶自己使用過程化SQL設(shè)計定義的。函數(shù)和存儲過程類似,都是持久性存儲模塊,所以定義過程也類似
不同之處是函數(shù)必須指定返回的類型。
語法:
第一種返回的什整個table:
CREATE FUNCTION 「NAME」(@INPUT CHAR(10))
RETURN TABLE
AS
RETURN ( <過程化SQL語句> )
第二種返回想要返回到數(shù)據(jù):
CREATE FUNCTION 「NAME」(@INPUT CHAR(10))
RETURN @TABLENAME TABLE
? ?(? 返回數(shù)據(jù)名? ? 返回數(shù)據(jù)類型? ?)
AS
BEGIN
INSERT @TABLENAME
<過程化SQL語句>
RETURN?
END
? ? ? ? ? ? ? ?修改函數(shù):ALTER FUCNTION 已存在的函數(shù)名
函數(shù)的執(zhí)行:
SELECT 函數(shù)名 (' @INPUT ')
刪除用戶自定義函數(shù):
drop 函數(shù)名
?
?
?
?
以上是在sql server 2008的環(huán)境,別問我為什么用這個數(shù)據(jù)庫,學(xué)校只有這種數(shù)據(jù)庫啦,2333333。
轉(zhuǎn)載于:https://www.cnblogs.com/evenGO/p/9233298.html
總結(jié)
以上是生活随笔為你收集整理的sql 存储过程和函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php简单算法之冒泡排序
- 下一篇: 初学LINQ语句