zoukankan      html  css  js  c++  java
  • 经典的多语句表值函数

    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go


    CREATE FUNCTION [dbo].[ufnGetContactInformation](@ContactID int)
    RETURNS @retContactInformation TABLE
    (
        -- Columns returned by the function
        [ContactID] int PRIMARY KEY NOT NULL,
        [FirstName] [nvarchar](50) NULL,
        [LastName] [nvarchar](50) NULL,
        [JobTitle] [nvarchar](50) NULL,
        [ContactType] [nvarchar](50) NULL
    )
    AS
    -- Returns the first name, last name, job title and contact type for the specified contact.
    BEGIN
        DECLARE
            @FirstName [nvarchar](50),
            @LastName [nvarchar](50),
            @JobTitle [nvarchar](50),
            @ContactType [nvarchar](50);

        -- Get common contact information
        SELECT
            @ContactID = ContactID,
            @FirstName = FirstName,
            @LastName = LastName
        FROM [Person].[Contact]
        WHERE [ContactID] = @ContactID;

        SET @JobTitle =
            CASE
                -- Check for employee
                WHEN EXISTS(SELECT * FROM [HumanResources].[Employee] e
                    WHERE e.[ContactID] = @ContactID)
                    THEN (SELECT [Title]
                        FROM [HumanResources].[Employee]
                        WHERE [ContactID] = @ContactID)

                -- Check for vendor
                WHEN EXISTS(SELECT * FROM [Purchasing].[VendorContact] vc
                        INNER JOIN [Person].[ContactType] ct
                        ON vc.[ContactTypeID] = ct.[ContactTypeID]
                    WHERE vc.[ContactID] = @ContactID)
                    THEN (SELECT ct.[Name]
                        FROM [Purchasing].[VendorContact] vc
                            INNER JOIN [Person].[ContactType] ct
                            ON vc.[ContactTypeID] = ct.[ContactTypeID]
                        WHERE vc.[ContactID] = @ContactID)

                -- Check for store
                WHEN EXISTS(SELECT * FROM [Sales].[StoreContact] sc
                        INNER JOIN [Person].[ContactType] ct
                        ON sc.[ContactTypeID] = ct.[ContactTypeID]
                    WHERE sc.[ContactID] = @ContactID)
                    THEN (SELECT ct.[Name]
                        FROM [Sales].[StoreContact] sc
                            INNER JOIN [Person].[ContactType] ct
                            ON sc.[ContactTypeID] = ct.[ContactTypeID]
                        WHERE [ContactID] = @ContactID)

                ELSE NULL
            END;

        SET @ContactType =
            CASE
                -- Check for employee
                WHEN EXISTS(SELECT * FROM [HumanResources].[Employee] e
                    WHERE e.[ContactID] = @ContactID)
                    THEN 'Employee'

                -- Check for vendor
                WHEN EXISTS(SELECT * FROM [Purchasing].[VendorContact] vc
                        INNER JOIN [Person].[ContactType] ct
                        ON vc.[ContactTypeID] = ct.[ContactTypeID]
                    WHERE vc.[ContactID] = @ContactID)
                    THEN 'Vendor Contact'

                -- Check for store
                WHEN EXISTS(SELECT * FROM [Sales].[StoreContact] sc
                        INNER JOIN [Person].[ContactType] ct
                        ON sc.[ContactTypeID] = ct.[ContactTypeID]
                    WHERE sc.[ContactID] = @ContactID)
                    THEN 'Store Contact'

                -- Check for individual consumer
                WHEN EXISTS(SELECT * FROM [Sales].[Individual] i
                    WHERE i.[ContactID] = @ContactID)
                    THEN 'Consumer'
            END;

        -- Return the information to the caller
        IF @ContactID IS NOT NULL
        BEGIN
            INSERT @retContactInformation
            SELECT @ContactID, @FirstName, @LastName, @JobTitle, @ContactType;
        END;

        RETURN;
    END;

  • 相关阅读:
    常见邮件服务器(接收服务器和发送邮件服务器)地址
    Linux下搭建SVN服务器(CentOS)
    macBook下更新python
    画画练习20180627
    如何用Photoshop画一个发光金币(unity游戏素材教程)
    Python+VSCode+Git 学习总结
    如何在MFC DLL中向C#类发送消息
    MFC信号量使用指南
    回归cnBlogs
    Web自动化测试框架Watir(基于Ruby)
  • 原文地址:https://www.cnblogs.com/huyong/p/2685683.html
Copyright © 2011-2022 走看看