Download presentation
Presentation is loading. Please wait.
Published byGodwin Eaton Modified over 9 years ago
1
SQL Server User Defined Functions
2
CREATE FUNCTION [ schema_name. ] function_name ( [ { @parameter_name [ AS ][ type_schema_name. ] parameter_data_type [ = default ] [ READONLY ] } [,...n ] ]) RETURNS return_data_type [ WITH [,...n ] ] [ AS ] BEGIN function_body RETURN scalar_expression END
3
CREATE FUNCTION [ schema_name. ] function_name ( [ { @parameter_name [ AS ] [ type_schema_name. ] parameter_data_type [ = default ] [ READONLY ] } [,...n ] ]) RETURNS TABLE [ WITH [,...n ] ] [ AS ] RETURN [ ( ] select_stmt [ ) ]
4
CREATE FUNCTION [ schema_name. ] function_name ( [ { @parameter_name [ AS ] [ type_schema_name. ] parameter_data_type [ = default ] [READONLY] } [,...n ] ]) RETURNS @return_variable TABLE [ WITH [,...n ] ] [ AS ] BEGIN function_body RETURN END
5
CREATE FUNCTION Orders.fn_oldestopenorder() RETURNS INT AS BEGIN DECLARE @OrderID INT, @MinOrderDate DATE SELECT @MinOrderDate = MIN(OrderDate) FROM Orders.OrderHeader WHERE FinalShipDate IS NULL SELECT @OrderID = MIN(OrderID) FROM Orders.OrderHeader WHERE OrderDate = @MinOrderDate RETURN @OrderID END GO
6
CREATE FUNCTION Orders.fn_openorders (@NumDays INT) RETURNS TABLE AS RETURN (SELECT OrderID, CustomerID, OrderDate FROM Orders.OrderHeader WHERE OrderDate <= DATEADD(dd,@NumDays,GETDATE()) AND FinalShipDate IS NULL) GO
7
CREATE FUNCTION Orders.fn_openshippableorders(@NumDays INT) RETURNS @ShippableOrders TABLE (OrderID INT NOT NULL, CustomerID INT NOT NULL, OrderDate DATE NOT NULL) AS BEGIN DECLARE @OpenOrders TABLE (OrderID INT NOT NULL, CustomerID INT NOT NULL, OrderDate DATE NOT NULL) INSERT INTO @OpenOrders (OrderID, CustomerID, OrderDate) SELECT OrderID, CustomerID, OrderDate FROM Orders.fn_openorders(@NumDays) INSERT INTO @ShippableOrders (OrderID, CustomerID, OrderDate) SELECT a.OrderID, a.CustomerID, a.OrderDate FROM @OpenOrders a INNER JOIN (SELECT OrderID FROM Orders.OrderDetail EXCEPT SELECT OrderID FROM Orders.OrderDetail c INNER JOIN Products.ProductOptions d ON c.SKU = d.SKU INNER JOIN Products.ProductInventory e ON d.ProductID = e.ProductID WHERE c.Quantity >= e.Quantity) b ON a.OrderID = b.OrderID RETURN END GO
8
USE AdventureWorks2008 GO CREATE FUNCTION dbo.fnContactList() RETURNS TABLE 416 Chapter 13: User-Defined Functions AS RETURN (SELECT BusinessEntityID, LastName + ‘, ‘ + FirstName AS Name FROM Person.Person); GO SELECT * FROM dbo.fnContactList();
9
USE AdventureWorks2008; GO CREATE FUNCTION dbo.fnContactSearch(@LastName nvarchar(50)) RETURNS TABLE AS RETURN (SELECT p.BusinessEntityID, LastName + ‘, ‘ + FirstName AS Name, ea.EmailAddress FROM Person.Person as p LEFT OUTER JOIN Person.EmailAddress ea ON ea.BusinessEntityID = p.BusinessEntityID WHERE LastName Like @LastName + ‘%’); GO
10
SELECT * FROM fnContactSearch(‘Ad’);
11
CREATE FUNCTION dbo.AveragePrice() RETURNS money WITH SCHEMABINDING AS BEGIN RETURN (SELECT AVG(ListPrice) FROM Production.Product); END GO CREATE FUNCTION dbo.PriceDifference(@Price money) RETURNS money AS BEGIN RETURN @Price - dbo.AveragePrice(); END
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.