Я создал хранимую процедуру, в которой я перебираю данные и вставляю записи на основе данных. Вставки имеют тот же формат, но данные немного изменяются.
Принятие решений осуществляется с помощью операторов IF / ELSE, и у меня есть дюжина или около того INSERT
запросов (по одному на каждое решение).
Я бы хотел поместить INSERT
в функцию, которую я могу просто вызвать с изменяющимися переменными.
Я хотел бы создать функцию в начале хранимой процедуры, а затем DROP
в конце.
USE [DB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER Procedure [dbo].[DataParser]
AS
CREATE FUNCTION [dbo].[InsertFunc]
(@Number VARCHAR(40),
@Line_No INT,
@Topic VARCHAR(30),
@Note VARCHAR(4099),
@Bool VARCHAR(1))
RETURNS bit
AS
BEGIN
INSERT INTO Processing (Number, Line_No, Topic, Note, Activation_Date, Mandatory)
VALUES (@Number, @Line_No, @Topic, @Note,
CONVERT(VARCHAR(8), GETDATE(), 1), @Mandatory)
RETURN @@ROWCOUNT
END
...
...
Decision tree
...
...
InsertFunc(@oid, @lidCounter, 'StrVal1', @strVar2, 'Y')
Прямо сейчас это не позволит мне сохранить хранимую процедуру, и если я попытаюсь создать функцию вне хранимой процедуры, я получу следующую ошибку:
Сообщение 443, Уровень 16, Состояние 15, Обработчик данных процедуры, Строка 12 [Строка 23 запуска партии]
Неправильное использование побочного эффекта оператора INSERT внутри функции.
Любая помощь приветствуется.