Вопрос или проблема
Создайте новую функцию 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;
Объяснение кода
- Определение функции: Функция
dbo.SType
определяется с двумя параметрами:@CLASS
и@TDESC
. - Возврат результата: Условие
CASE
проверяет различные условия на основе значений параметров:- Если
@CLASS
пустой и@TDESC
равно ‘PY’, функция возвращает ‘Calendar’. - Если
@CLASS
пустой и@TDESC
равно ‘BD’, функция возвращает ‘Non Billable’. - Если
@CLASS
равно ‘Non-Billable’, функция возвращает ‘Non Billable’. - В противном случае возвращается значение
@CLASS
или ‘Non Billable’, если@CLASS
равноNULL
.
- Если
- Использование
ISNULL
: ФункцияISNULL
используется для обработкиNULL
значений в@CLASS
.
Заключение
Создание функции в T-SQL позволяет модульно управлять логикой и упрощает ваш код. Функция dbo.SType
может быть легко вызвана из других запросов или представлений, обеспечивая гибкость и удобство работы с данными. Надеюсь, это руководство поможет вам в создании функций в T-SQL и улучшении структуры вашей базы данных.