Создание функции в T-SQL с параметрами [закрыто]

Вопрос или проблема

Создайте новую функцию dbo.SType с требуемыми параметрами.

SELECT
    CASE 
        WHEN LEN(CLASS) = 0 AND tdesc="PY" THEN 'Календарь'
        WHEN LEN(CLASS) = 0 AND tdesc="BD" THEN 'Не подлежит выставлению счета'
        WHEN class="Не подлежащее выставлению счету" THEN 'Не подлежащее выставлению счету'
        ELSE ISNULL(CLASS, 'Не подлежащее выставлению счету') 
    END AS ST
FROM
    dbo.TaskList

.

Ответ или решение

Создание функции в T-SQL с параметрами: пошаговое руководство

В T-SQL вы можете создавать функции, чтобы инкапсулировать логику операций и улучшить читаемость кода. В данном ответе мы рассмотрим создание функции dbo.SType, которая будет принимать необходимые параметры и возвращать значение, основанное на логике, предоставленной в вопросе.

Шаг 1: Определение функции

Функция в SQL Server создается с помощью команды CREATE FUNCTION. Она может принимать параметры, а также возвращать значения. В нашем примере мы создадим функцию, которая будет принимать два параметра: @CLASS и @TDESC.

Шаг 2: Применение логики

Логика, предоставленная в SQL запросе, будет использоваться в нашей функции. Мы создадим тело функции, используя оператор CASE, чтобы вернуть соответствующее значение на основе переданных параметров.

Шаг 3: Код функции

Ниже приведён код для создания функции dbo.SType:

CREATE FUNCTION dbo.SType 
(
    @CLASS NVARCHAR(255),
    @TDESC NVARCHAR(255)
)
RETURNS NVARCHAR(255)
AS
BEGIN
    DECLARE @Result NVARCHAR(255);

    SET @Result = CASE 
        WHEN LEN(@CLASS) = 0 AND @TDESC = 'PY' THEN 'Calendar'
        WHEN LEN(@CLASS) = 0 AND @TDESC = 'BD' THEN 'Non Billable'
        WHEN @CLASS = 'Non-Billable' THEN 'Non Billable'
        ELSE ISNULL(@CLASS, 'Non Billable') 
    END;

    RETURN @Result;
END

Шаг 4: Использование функции

Теперь, когда функция создана, вы можете использовать её в ваших запросах. Например:

SELECT 
    TaskID,
    dbo.SType(CLASS, tdesc) AS ST
FROM 
    dbo.TaskList;

Объяснение кода

  1. Определение функции: Функция dbo.SType определяется с двумя параметрами: @CLASS и @TDESC.
  2. Возврат результата: Условие CASE проверяет различные условия на основе значений параметров:
    • Если @CLASS пустой и @TDESC равно ‘PY’, функция возвращает ‘Calendar’.
    • Если @CLASS пустой и @TDESC равно ‘BD’, функция возвращает ‘Non Billable’.
    • Если @CLASS равно ‘Non-Billable’, функция возвращает ‘Non Billable’.
    • В противном случае возвращается значение @CLASS или ‘Non Billable’, если @CLASS равно NULL.
  3. Использование ISNULL: Функция ISNULL используется для обработки NULL значений в @CLASS.

Заключение

Создание функции в T-SQL позволяет модульно управлять логикой и упрощает ваш код. Функция dbo.SType может быть легко вызвана из других запросов или представлений, обеспечивая гибкость и удобство работы с данными. Надеюсь, это руководство поможет вам в создании функций в T-SQL и улучшении структуры вашей базы данных.

Оцените материал
Добавить комментарий

Капча загружается...