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 в любом месте вашего кода