|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
也不知道,我同学昨天说数据挖掘很好。存储历程比来一个项目中碰到一个转换FileTime的成绩.工夫是在C#顶用DateTime.ToFileTime写进数据库中,这在存储过程当中判别年和季度成了成绩,怎样才干把工夫转换为一般的工夫格局呢?Sqlserver中又没有FromFileTime对应的办法?实在很复杂用C#写一个转换工夫的Dll然后在存储过程当中挪用就能够了.
转换工夫的类以下:
[Guid("729ba6af-3eff-4b75-b43b-d951a190dbe6")]
publicclassFileTimeConvert
{
publicFileTimeConvert()
{
}
publicstringConvertTime(longfileTime)
{
stringretVal=string.Empty;
if(fileTime>0)
{
DateTimedt=DateTime.FromFileTime(fileTime);
retVal=dt.ToString();
}
returnretVal;
}
}
注重这个Guid我们在存储过程当中援用要用到这个Guid.
为便利大概在多处必要挪用,我们专门写一个存储历程
以下:
CREATEPROCEDUREspu_ConvertFileTimeToNormal
@ticksBIGINT,
@returnvalvarchar(40)output
AS
DECLARE@srcvarchar(255)
DECLARE@descvarchar(255)
DECLARE@objectint
DECLARE@hrint
EXEC@hr=sp_OACreate{729ba6af-3eff-4b75-b43b-d951a190dbe6},@objectOUT
IF@hr=0--假如创立工具乐成
BEGIN
EXEC@hr=sp_OAMethod@object,ConvertTime,@returnvalOUT,@ticks
print@returnval
print@hr
if(@hr0)
BEGIN
EXECsp_OAGetErrorInfo@object,@srcOUT,@descOUT
SELECThr=convert(varbinary(4),@hr),Source=@src,Description=@desc
END
END
ELSE
BEGIN
--print@hr
printCreateObjectConvertTimefailed
EXECsp_OAGetErrorInfo@object,@srcOUT,@descOUT
SELECThr=convert(varbinary(4),@hr),Source=@src,Description=@desc
RETURN
END
EXEC@hr=sp_OADestroy@object
IF@hr0
BEGIN
EXECsp_OAGetErrorInfo@object
RETURN
END
GO
这个时分我们还差最初一步注册DLL了
在.net命令行下输出regasm-codebasepath
好了,如今我们就能够在其他存储过程当中挪用这个存储历程前往一般的工夫了.
给个小例子:
EXECspu_ConvertFileTimeToNormal@CreateTime,@NormalTimeOUT
@CreateTime:FileTime格局
@NormalTime:一般的工夫格局字符串(spu_ConvertFileTimeToNormal存储历程前往值)
这个复杂的小例子申明了我们怎样在存储过程当中挪用DLL
是否是你办理成绩又多了一个选择了呢?
不过你如果学.net的话,你就不要选os了,这课比较底层的。你可以旁听数据库加上软件构件和中间件。(webservices和面向服务的课也应该听一听) |
|