自定義項(udf)和sql中的儲存過程(stored procedure in sql)的區別

UDF與SQL中的儲存過程...

UDF與SQL中的儲存過程

SQL環境附帶了各種元件,用於成功地交付手頭的任務。有使用者定義的函式和儲存過程,它們在SQL環境中很常見。下麵將對這兩者之間的區別進行綜述。

差異

使用者定義函式的第一個區別是,它的程式設計方式必須返回一個值。對於是否返回值,儲存過程有一定的餘量。這取決於儲存過程是否有要返回的值。

使用者定義函式和儲存過程之間的另一個區別是語句。使用者定義函式只允許讀取select語句,而不允許讀取DML語句。另一方面,儲存過程允許使用select語句和DML語句,DML語句也可以更新和操作。

使用者定義的函式只允許輸入引數,但不支援輸出相同的引數。相反,儲存過程支援輸入和輸出引數。UDF也不允許使用try-catch塊。儲存過程允許使用try catch塊進行異常處理。

自定義項也不允許在函式中發生事務。此功能在允許事務處理的儲存過程中可用。自定義項也不允許使用表變數,也不允許使用臨時表。然而,儲存過程允許使用表變數以及其中的臨時表。

在函式中,UDF不允許從中呼叫儲存的表。當涉及到儲存過程時,這是完全不同的,儲存過程允許不受任何限制地呼叫函式。使用函式時,UDF不允許從select語句呼叫所述函式。儲存過程還認為,不能從Where/Select和Having語句呼叫過程。但是,Exec或Execute可以用來呼叫甚至執行儲存過程。最後但並非最不重要的一點是,UDF可以用於建立join子句,利用結果集。在儲存過程中,這是不可能的,因為join子句中不允許有任何過程。還需要註意的是,儲存過程允許返回零甚至n個值,而UDF只能返回一個特定的預設值。

摘要

函式必須返回值,而不是儲存過程。Select語句只在UDF中接受,DML語句不需要。儲存過程接受任何語句以及DML語句。UDF只允許輸入,不允許輸出。儲存過程允許輸入和輸出。在UDF中不能使用Catch塊但可以在儲存過程中使用。UDF中的函式不允許事務,但在儲存過程中允許事務。只有表變數可以在UDF中使用,而不能在臨時表中使用。儲存過程允許表變數和臨時表。UDF不允許在儲存過程中從函式呼叫儲存過程允許呼叫函式。在join子句中使用UDF,而在join子句中不能使用儲存過程。儲存過程將始終允許返回零。相反,UDF的值必須回到預定的點。

  • 發表於 2021-06-24 12:40
  • 閱讀 ( 19 )
  • 分類:科技

你可能感興趣的文章

sql語言(sql)和mysql資料庫(mysql)的區別

...的集合。有各種型別的資料庫。關係資料庫是以表的形式儲存資料的資料庫型別。這些表是相互關聯的,因為它們使用約束。MySQL是一個關係資料庫管理系統。用於對資料庫執行操作的語言稱為SQL。SQL與MySQL的主要區別在於SQL是...

  • 發佈於 2020-10-17 12:07
  • 閲讀 ( 52 )

聯盟(union)和sqlserver中的union all(union all in sql server)的區別

...是資料庫管理系統中管理資料的語言。Union和Union all是SQL中的兩個命令,它們有助於在表資料中執行set操作。 目錄 1. 概述和主要區別 2. SQL Server中的聯合是什麼 3. 什麼是sqlserver中的Union All 4. 並排比較-在SQL Server中以表格形式顯...

  • 發佈於 2020-10-18 10:13
  • 閲讀 ( 48 )

哪裡(where)和sql中的having子句(having clause in sql)的區別

哪裡(where)和sql中的having子句(having clause in sql)的區別 資料對每個組織都很重要。因此,有必要以有組織的方式儲存資料以檢索它們。資料儲存在表中。資料庫由一組表組成。一種常見的資料庫型別是關係資料庫。在關係資料...

  • 發佈於 2020-10-24 02:15
  • 閲讀 ( 49 )

為下一個專案考慮6個數據庫引擎

對於軟體開發中的資料庫引擎來說,並不是一刀切的,因為這完全取決於您的專案需求。 ...

  • 發佈於 2021-03-28 09:56
  • 閲讀 ( 73 )

輕鬆檢視資料庫中各個sql表的磁碟空間使用情況

...庫中每個表的以下資訊以表格格式列出: 資料庫表名表中的行數SQL分配給此表的總磁碟空間用於資料儲存的磁碟空間量用於內部SQL索引的磁碟空間量當前未使用的磁碟空間量 使用指令碼 DBSize批處理指令碼與sql2005及更高版本...

  • 發佈於 2021-04-13 07:54
  • 閲讀 ( 33 )

確定sql server中表的大小

有沒有想過資料庫中的表到底有多大?您知道表中有一百萬行,但這到底佔用了多少空間? SQL Server提供了一個內建的儲存過程,您可以執行它來輕鬆地顯示錶的大小,包括索引的大小…這可能會讓您感到驚訝。 語法: sp_spaceus...

  • 發佈於 2021-04-14 14:42
  • 閲讀 ( 31 )

使用smtp在sql server中傳送自動作業電子郵件通知

...通知成功 在命令視窗中輸入這個SQL,如下所示。您需要自定義電子郵件地址和郵件主題以匹配您的環境: exec master.dbo.sp_SQLNotify ‘[email protected]’,’[email protected]’,’Backup Job Success’,’The Backup Job completed successfully’ ...

  • 發佈於 2021-04-14 15:47
  • 閲讀 ( 56 )

功能(function)和程式(procedure)的區別

功能與程式 計算機程式設計是軟體開發過程的一個階段。它被認為是一門手藝、一門藝術和一門工程學科,可以為計算機使用者遇到的問題建立一個有用的軟體解決方案。在編寫計算機程式時,程式設計師使用一種程式設計語...

  • 發佈於 2021-06-23 15:49
  • 閲讀 ( 49 )

鑄造(cast)和轉換(convert)的區別

...位制和數字值時更有用,因為該函式能夠保留原始表示式中的小數位數。 正是由於這些原因,專家們建議先使用Cast進行轉換,然後再將Convert用於Cast無法有效執行的特定任務。簡單地說,當使用者希望Transact-SQL程式程式碼符合SQ...

  • 發佈於 2021-06-23 23:54
  • 閲讀 ( 64 )

參加(join)和內部連線(inner join)的區別

...定列名的所有匹配行。您可以註意到,列名稱是這兩個表中的識別符號鍵,上面的查詢將比較這些列以查詢匹配的行。 “內部連線”是什麼? “Inner Join”是一種SQL語法,其功能與“Join”語法相同。當您在上面的SQL查詢中將“Jo...

  • 發佈於 2021-06-24 03:08
  • 閲讀 ( 56 )