Как создать функцию в SQL Server для поиска, существуют ли данные или нет? - PullRequest
0 голосов
/ 19 февраля 2019

Необходимо знать синтаксис для создания функции и разницу между функцией встроенного табличного значения и функцией табличного значения для нескольких операторов.

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

СКАЛЯРНАЯ ФУНКЦИЯ возвращает только скалярное / единичное значение.Мы можем использовать скалярную функцию в операторе SELECT, предложении WHERE, GROUP BY, HAVING.Мы должны упомянуть тип данных этого единственного значения данных в предложении RETURNS определения функции.

Например, ниже функция, принимающая дату в качестве входных данных в формате «дд / мм / гггг» и возвращающая из нее день и месяц.Не обязательно, чтобы функция всегда принимала входной параметр, но она всегда должна возвращать значение.

create function GetDateDaynMonth(@date varchar(20))
returns varchar(20)
as
begin
    declare @DaynMonth varchar (20)
SELECT @DaynMonth = FORMAT (convert(datetime, @date, 103), 'dd MMMM') 
return @DaynMonth;
end
go

** - Для выполнения функции **

select dbo.GetDateDaynMonth('25/06/2018')

TABLE VALUEDFUNCTION Пользовательская функция с табличным значением возвращает набор результатов / набор строк вместо одного / скалярного значения.Он может быть вызван в предложении FROM или JOIN запроса SELECT.

Для получения дополнительной информации с несколькими примерами

https://docs.microsoft.com/en-us/sql/t-sql/statements/create-function-transact-sql?view=sql-server-2017

0 голосов
/ 19 февраля 2019

ФУНКЦИЯ ЗНАЧЕНИЯ ВНУТРЕННЕЙ ТАБЛИЦЫ

Определение встроенной табличной функции определяет только RETURNS TABLE, а не определение таблицы.Весь пакет запроса или код или запрос выбора внутри функции представляет собой один оператор RETURN

CREATE FUNCTION CustomerProductDetails (@CustomerID NCHAR(5))
RETURNS TABLE
AS
RETURN (
        -- Select statement
        )
GO

МНОГОФУНКЦИОНАЛЬНАЯ ТАБЛИЦА VALUED FUNCTION

Определение табличной функции с несколькими операторамиопределяет ВОЗВРАТЫ вместе с определением TABLE VARIABLE.Тело функции может состоять из нескольких операторов, и один из них будет заполнять этот TABLE VARIABLE.И область действия / срок службы этой переменной таблицы ограничен только этой функцией - вне этой функции она недоступна.

CREATE FUNCTION CustomerOrderDetails (@CustomerID NCHAR(5))
RETURNS @CustomerOrders TABLE (
    CustomerID NCHAR(5)
    ,CompanyName NVARCHAR(40)
    ,OrderID INT
    ,OrderDate DATETIME
    )
AS
BEGIN
    INSERT INTO @CustomerOrders
    SELECT C.CustomerID
        ,C.CompanyName
        ,O.OrderID
        ,O.OrderDate
    FROM Customers C
    INNER JOIN Orders O ON C.CustomerID = C.CustomerID
    WHERE C.CustomerID = @CustomerID

    RETURN
END
GO
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...