部署和生成自定义函数,其中考虑到并发,我们还是需要一个并发键来表达当前查询
——————————————————————————–
CREATE ASSEMBLY TestForSQLCLR FROM ‘E:/sqlclrdata/TestFun.dll’ WITH PERMISSION_SET = UnSAFE;
—
go
CREATE FUNCTION dbo. xfn_GetPrevMemberValue
(
@key nvarchar ( 255),
@initByDim nvarchar ( 255),
@currentValue nvarchar ( 255)
)
RETURNS nvarchar ( 255)
AS EXTERNAL NAME TestForSQLCLR. [UserDefinedFunctions]. GetPrevMemberValue
go
CREATE FUNCTION dbo. xfn_initKey
(
@key nvarchar ( 255)
)
RETURNS bit
AS EXTERNAL NAME TestForSQLCLR. [UserDefinedFunctions]. InitKey
go
CREATE FUNCTION dbo. xfn_disposeKey
(
@key nvarchar ( 255)
)
RETURNS bit
AS EXTERNAL NAME TestForSQLCLR. [UserDefinedFunctions]. DisposeKey
——————————————————————————–
这样我们就可以使用了,测试脚本如下, xfn_GetPrevMemberValue就是获取上月价格的函数。
——————————————————————————–
— 建立测试环境
declare @t table (
[ 区域 ] [varchar]( 4) COLLATE Chinese_PRC_CI_AS NULL,
[TradeMonth] [varchar]( 7) COLLATE Chinese_PRC_CI_AS NULL,
[TradeMoney] [float] NULL,
[TradeArea] [float] NULL,
[TradePrice] [float] NULL
)
insert into @t
select ‘ 闵行 ‘ , ‘2007-03’ , ‘2125714.91’ , ‘241.65’ , ‘8796.67’ union
select ‘ 闵行 ‘ , ‘2007-04’ , ‘8408307.64’ , ‘907.32’ , ‘9267.19’ union
select ‘ 闵行 ‘ , ‘2007-05’ , ‘10230321.95’ , ‘1095.88’ , ‘9335.26’ union
select ‘ 浦东 ‘ , ‘2007-01’ , ‘12738432.25’ , ‘1419.05’ , ‘8976.73’ union
select ‘ 浦东 ‘ , ‘2007-02’ , ‘4970536.74’ , ‘395.49’ , ‘12568.05’ union
select ‘ 浦东 ‘ , ‘2007-03’ , ‘5985405.76’ , ‘745.94’ , ‘8023.98’ union
select ‘ 浦东 ‘ , ‘2007-04’ , ‘21030788.61’ , ‘1146.89’ , ‘18337.23’ union










