SQL Server に、テキスト エントリ(varchar(max))に基づいてID (int)を返すスカラー値関数があります。この関数は、特定のシリアル番号の製品 SKU ID を返すために使用されます。
これがSQL関数です。
CREATE function [dbo].[fGetPSKU]
(
@SerialNumber varchar(MAX)
)
returns int
begin
/*
local variables
*/
declare cmodel cursor local for
select PSKU.ProductSKUID, PSKU.ProductSKUValadationStart, PSKU.ProductSKUValadationEnd, PSKU.ProductSKUValadationMask, PSKU.PruductSKUValadationLength
from SCM.dbo.ProductSKU PSKU
where PSKU.ProductSKUActive = 0
and PSKU.ProductSKURequiresValadation = 1
order by PSKU.ProductSKUValadationEnd - PSKU.ProductSKUValadationStart desc, len(PSKU.ProductSKUValadationMask) desc, PSKU.ProductSKUDateCreated desc, PSKU.ProductSKUID desc
declare @mid int
declare @mstart int
declare @mend int
declare @masks varchar(max)
declare @lengths varchar(255)
declare @found int
declare @model int
/*
main code
*/
set @found = 0
set @model = -1
open cmodel
fetch next from cmodel into @mid, @mstart, @mend, @masks, @lengths
while @@fetch_status = 0 and @found = 0
begin
if exists
(
select null
from SCM..fParseDelimited(@masks, ',')
where ids = substring(@SerialNumber, @mstart, @mend - @mstart + 1)
)
and exists
(
select null
from SCM..fParseDelimited(@lengths, ',')
where ids = convert(varchar, len(@SerialNumber))
)
begin
set @found = 1
set @model = @mid
end
fetch next from cmodel into @mid, @mstart, @mend, @masks, @lengths
end
close cmodel
return @model
end
Entity Framework にインポートすると、次のエラーが表示されます。この同様の投稿を読み ましたが、関数を正常に実行するために EF のどこに何を作成すればよいかについてはあまり明確ではありません。
アドバイス/ヘルプをいただければ幸いです。