當前位置:首頁 » 存儲配置 » sql存儲過程自定義函數

sql存儲過程自定義函數

發布時間: 2022-07-24 21:25:07

『壹』 sql用戶自定義函數和存儲過程有什麼區別

本質上沒區別。只是函數有如:只能返回一個變數的限制。而存儲過程可以返回多個。而函數是可以嵌入在sql中使用的,可以在select中調用,而存儲過程不行。執行的本質都一樣。

『貳』 存儲過程和自定義函數的區別

SQL中存儲過程和自定義函數的區別
2008年12月19日來源:233網校評論 分享到 我的做題記錄

剛開始學SQL,很快就發現存儲過程和資料庫自定義函數之間貌似有很多的相同點,所以把其差別簡單做下記錄,以備以後查閱:
存儲過程:
存儲過程可以使得對資料庫的管理、以及顯示關於資料庫及其用戶信息的工作容易得多。存儲過程是 SQL 語句和可選控制流語句的預編譯集合,以一個名稱存儲並作為一個單元處理。存儲過程存儲在資料庫內,可由應用程序通過一個調用執行,而且允許用戶聲明變數、有條件執行以及其它強大的編程功能。
存儲過程可包含程序流、邏輯以及對資料庫的查詢。它們可以接受參數、輸出參數、返回單個或多個結果集以及返回值。
可以出於任何使用 SQL 語句的目的來使用存儲過程,它具有以下優點:
1、可以在單個存儲過程中執行一系列 SQL 語句。
2、可以從自己的存儲過程內引用其它存儲過程,這可以簡化一系列復雜語句。
3、存儲過程在創建時即在伺服器上進行編譯,所以執行起來比單個 SQL 語句快。
用戶定義函數:
Microsoft SQL Server 2000 允許創建用戶定義函數。與任何函數一樣,用戶定義函數是可返回值的常式。根據所返回值的類型,每個用戶定義函數可分成以下三個類別:
1、返回可更新數據表的函數
如果用戶定義函數包含單個 Select 語句且該語句可更新,則該函數返回的表格格式結果也可以更新。
2、返回不可更新數據表的函數
如果用戶定義函數包含不止一個 Select 語句,或包含一個不可更新的 Select 語句,則該函數返回的表格格式結果也不可更新。
3、返回標量值的函數
用戶定義函數可以返回標量值。
存儲過程
功能強大,限制少
不能直接引用返回值
用select語句返回記錄集
自定義函數
諸多限制,有許多語句不能使用,許多功能不能實現
可以直接引用返回值
用表變數返回記錄集

『叄』 SQL中存儲過程與自定義函數怎麼互相轉換

--(1):輸入一個數,返回結果為這個數加1
--存儲過程:
create procere pro_test
@input int,
@output int output
as
set @output = @input+1
go

--函數:
create function f_test(@input int)
returns int
as
begin
declare @output int
set @output = @input+1
return @output
end

--(2)輸入一個數,返回一個結果集
--存儲過程:
create procere pro_test2
@input int
as
select * from sysobjects where id = @input
go

--函數:
create function f_test2(@input int)
returns table
as
return (select * from sysobjects where id = @input)

『肆』 sqlserver存儲過程如何調用自定義函數

返回單個值的函數, 可以當變數用, 比如 select dbo.函數名(參數1, 參數2, ...) from ...where abc = dbo.函數名(參數1, 參數2...)

返回表的函數, 可以當數據表來使用, 比如 select * from dbo.函數名(參數1, 參數2, ...)

『伍』 SQL中存儲過程和函數的區別

本質上沒區別。只是函數有如:只能返回一個變數的限制。而存儲過程可以返回多個。而函數是可以嵌入在sql中使用的,可以在select中調用,而存儲過程不行。執行的本質都一樣。
函數限制比較多,比如不能用臨時表,只能用表變數.還有一些函數都不可用等等.而存儲過程的限制相對就比較少
1. 一般來說,存儲過程實現的功能要復雜一點,而函數的實現的功能針對性比較強。
2. 對於存儲過程來說可以返回參數,而函數只能返回值或者表對象。
3. 存儲過程一般是作為一個獨立的部分來執行(EXEC執行),而函數可以作為查詢語句的一個部分來調用(SELECT調用),由於函數可以返回一個表對象,因此它可以在查詢語句中位於FROM關鍵字的後面。
4. 當存儲過程和函數被執行的時候,SQL Manager會到procere cache中去取相應的查詢語句,如果在procere cache里沒有相應的查詢語句,SQL Manager就會對存儲過程和函數進行編譯。
Procere cache中保存的是執行計劃 (execution plan) ,當編譯好之後就執行procere cache中的execution plan,之後SQL SERVER會根據每個execution plan的實際情況來考慮是否要在cache中保存這個plan,評判的標准一個是這個execution plan可能被使用的頻率;其次是生成這個plan的代價,也就是編譯的耗時。保存在cache中的plan在下次執行時就不用再編譯了。

『陸』 在SQL中怎樣調用自定義函數

在select後跟你的自定義函數就可以。

mysql中用select調用自帶的now()函數:
mysql> select now();
然後mysql就會返回當前的時間。

『柒』 SQL如何在存儲過程中調用自定義函數求組合數

create proc ....
as
begin
--這是標量函數的例子
select *, dbo.fn_Number(Column1) as 組合數 from tempTable
end

熱點內容
androidlollipop 發布:2024-10-05 07:40:38 瀏覽:697
買es200哪個配置性價比 發布:2024-10-05 07:33:03 瀏覽:552
linux分區方案 發布:2024-10-05 07:21:51 瀏覽:852
小說分銷系統源碼 發布:2024-10-05 07:13:54 瀏覽:631
主板能存儲數據嗎 發布:2024-10-05 07:13:22 瀏覽:89
安卓文件管理器在哪裡打開手機 發布:2024-10-05 07:12:19 瀏覽:224
個人網站源碼html 發布:2024-10-05 06:59:47 瀏覽:409
安卓fc下載游戲在哪個文件夾 發布:2024-10-05 06:51:05 瀏覽:765
演算法狼人殺 發布:2024-10-05 06:50:21 瀏覽:346
ibm伺服器怎麼做raid5 發布:2024-10-05 06:46:20 瀏覽:854