在關聯式資料庫管理系統(RDBMS)中,函數、過程、遊標和觸發器等各種元件至關重要增強資料庫系統的靈活性和功能性的作用。它們允許開發人員實現自訂業務邏輯、自動執行重複任務並更有效地管理資料。
本指南將提供這些組件的全面解釋,以及每個組件的範例程式碼片段。
是一個儲存程序,可以接受輸入、執行操作並傳回值。它類似於過程,但函數必須傳回一個值,並且可以像任何其他表達式一樣在查詢中使用。 要點:
CREATE FUNCTION dbo.SquareNumber (@Number INT) RETURNS INT AS BEGIN RETURN @Number * @Number END
SELECT dbo.SquareNumber(4); -- Output: 16
2. SQL 中的過程
(也稱為預存程序)是一組可以作為一個單元執行的SQL 語句。過程可以接受參數,執行插入、更新、刪除和選擇等操作,並傳回多個結果(但不能像函數那樣直接傳回單一值)。 要點:
CREATE PROCEDURE dbo.UpdateSalary @EmployeeID INT, @NewSalary DECIMAL AS BEGIN UPDATE Employees SET Salary = @NewSalary WHERE EmployeeID = @EmployeeID; END
EXEC dbo.UpdateSalary @EmployeeID = 101, @NewSalary = 75000;
3. SQL中的遊標
我們來寫一個例子,使用遊標將所有員工的薪水更新 10%。
CREATE FUNCTION dbo.SquareNumber (@Number INT) RETURNS INT AS BEGIN RETURN @Number * @Number END
說明:
觸發器是一種特殊類型的預存程序,當發生特定資料庫事件(例如表上的 INSERT、UPDATE 或 DELETE)時,它會自動執行(或「觸發」)。觸發器對於執行業務規則、維護資料完整性或在發生變更時自動更新相關表非常有用。
讓我們建立一個觸發器,每當員工的薪資更新時,該觸發器都會自動更新 LastModified 欄位。
SELECT dbo.SquareNumber(4); -- Output: 16
說明:
Component | Description | Example Use Case |
---|---|---|
Function | A stored program that returns a single value and can be used in queries. | Calculate the square of a number. |
Procedure | A stored program that can perform multiple actions (insert, update, delete) but does not return a value. | Update an employee’s salary. |
Cursor | A mechanism for iterating over a result set row-by-row, used for operations that cannot be easily expressed in set-based SQL. | Update all employees’ salaries by a fixed percentage. |
Trigger | A stored program that automatically executes when specific database events (INSERT, UPDATE, DELETE) occur. | Automatically update a timestamp column when a record is modified. |
以上是SQL 中的函數、過程、遊標和觸發器的詳細內容。更多資訊請關注PHP中文網其他相關文章!