1

挿入クエリでスカラー値関数を実行しようとしています。私は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);

を実行すると、パラメータ値が文字列として取得されます。関数は実行されません。ここで私が間違っていることを教えていただけますか?

4

1 に答える 1

0

関数に select ステートメントを使用する

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

次のように、これを使用する前に変数に割り当てることができます。

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

コード内のどこでも @parameter を使用できるようになりました

于 2012-09-05T05:29:43.703 に答える