搜尋
首頁php教程PHP开发SQL Server中預存程序與函數的區別

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

  函數限制比較多,例如不能用臨時表,只能用表變量.還有一些函數都不可用等等.而存儲過程的限制相對就比較少

  1. 一般來說,存儲過程實現的功能要複雜一點,函數的實現的功能針對性比較強。

  2. 對於預存程序來說可以傳回參數,而函數只能傳回值或表物件。

  3. 預存程序一般是作為一個獨立的部分來執行,而函數可以作為查詢語句的一個部分來調用,由於函數可以返回一個表對象,因此它可以在查詢語句中位於FROM關鍵字的後面。

  4. 當預存程序和函數被執行的時候,SQL Manager會到procedure cache中去取對應的查詢語句,如果在procedure cache裡沒有對應的查詢語句,SQL Manager就會對預存程序和函式進行編譯。

  Procedure cache中保存的是執行計劃(execution plan) ,當編譯好之後就執行procedure cache中的execution plan,之後SQL SERVER會根據每個execution plan的實際情況來考慮是否要在cache中保存這個plan ,評判的標準一個是這個execution plan可能被使用的頻率;其次是產生這個plan的代價,也就是編譯的耗時。保存在cache中的plan在下次執行時就不用再編譯了。

  預存程序和使用者自訂函數具體的區別

  先看定義:

  預存程序

  預存程序可以使得對資料庫的管理、以及儲存過程

  預存程序可以使得對資料庫的管理、以及顯示預存程序及其使用者資訊的工作容易得多。預存程序是 SQL 語句和可選控制流語句的預編譯集合,以一個名稱儲存並作為一個單元處理。預存程序儲存在資料庫內,可由應用程式透過一個呼叫執行,而且允許使用者聲明變數、有條件執行以及其它強大的程式設計功能。

  預存程序可包含程式流程、邏輯以及對資料庫的查詢。它們可以接受參數、輸出參數、傳回單一或多個結果集以及傳回值。

  可以出於任何使用 SQL 語句的目的來使用預存程序,它具有以下優點:

  可以在單一預存程序中執行一系列 SQL 語句。

  可以從自己的儲存過程內引用其它儲存過程,這可以簡化一系列複雜語句。

  預存程序在創建時即在伺服器上進行編譯,所以執行起來比單一 SQL 語句快。

  使用者定義函數

  函數是由一個或多個 Transact-SQL 語句組成的子程序,可用於封裝程式碼以便重新使用。 Microsoft? SQL Server? 2000 不會將使用者限制在定義為 Transact-SQL 語言一部分的內建函數上,而是允許使用者建立自己的使用者定義函數。

  可使用 CREATE FUNCTION 語句建立、使用 ALTER FUNCTION 語句修改、以及使用 DROP FUNCTION 語句移除使用者定義函數。每個完全合法的使用者定義函數名稱 (database_name.owner_name.function_name) 必須唯一。

  必須被授予 CREATE FUNCTION 權限才能建立、修改或移除使用者定義函數。不是擁有者的使用者在 Transact-SQL 語句中使用某個函數之前,必須先給此使用者授予該函數的適當權限。若要建立或變更在 CHECK 約束、DEFAULT 子句或計算列定義中引用使用者定義函數的表,也必須具有函數的 REFERENCES 權限。

🎜🎜
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),