SqlParameter, вызывающий пользовательскую функцию в запросе вставки

Я пытаюсь выполнить скалярную функцию в запросе вставки. Я использую набор параметров sql, но все еще застрял с ним.

запрос

Insert into PackageProducts values (@id, @name, @prodId, @prodCode)

// Я хочу вызвать скалярную функцию, чтобы получить значение для @prodCode, когда этот запрос выполняется

функция

create function getProdCodeById(@id uniqueidentifier) returns varchar(15)
begin
declare @code varchar(15)
select @code=ProductCode from Products where ID=@id
return @code
end

Что я пытаюсь сделать

//create command, connection etc.. after than

DbParameter param = createParameter() ; // returns an empty parameter
param.Name = "@prodCode";
param.Value = String.Format("getProdCodeById('{0}')", 5);

когда я выполняю, он принимает значение параметра в виде строки.. функция никогда не выполняется. Можете ли вы сказать мне, что я здесь делаю не так?

1 ответ

Решение

Используйте оператор выбора для своей функции

SELECT [dbo].[getProdCodeById] (@id)

Вы можете присвоить это переменной перед использованием, как в

DECLARE @parameter varchar(15)
SET @parameter  = (SELECT [dbo].[getProdCodeById] (@id))

Теперь вы можете использовать @parameter в любом месте вашего кода

Другие вопросы по тегам