Presentation is loading. Please wait.

Presentation is loading. Please wait.

SQL Server User Defined Functions. CREATE FUNCTION [ schema_name. ] function_name ( [ [ AS ][ type_schema_name. ] parameter_data_type.

Similar presentations


Presentation on theme: "SQL Server User Defined Functions. CREATE FUNCTION [ schema_name. ] function_name ( [ [ AS ][ type_schema_name. ] parameter_data_type."— Presentation transcript:

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


Download ppt "SQL Server User Defined Functions. CREATE FUNCTION [ schema_name. ] function_name ( [ [ AS ][ type_schema_name. ] parameter_data_type."

Similar presentations


Ads by Google