預存程序中調用C#自訂封裝的DLL

來源:互聯網
上載者:User
項目中遇到一個轉換FileTime的問題.時間是在C#中用DateTime.ToFileTime寫入資料庫中,這在預存程序中判斷年和季度成了問題,怎麼樣才能把時間轉換為正常的時間格式呢?Sql server中又沒有FromFileTime對應的方法?其實很簡單用C#寫一個轉換時間的Dll然後在預存程序中調用就可以了.
轉換時間的類如下:
[Guid("729ba6af-3eff-4b75-b43b-d951a190dbe6")]
public class FileTimeConvert
{
   public FileTimeConvert()
   {
   }

   public string ConvertTime(long fileTime)
   {
    string retVal = string.Empty;
    if (fileTime > 0)
    {
     DateTime dt = DateTime.FromFileTime(fileTime);
     retVal = dt.ToString();   
    }
    return retVal;
   } 
}
注意這個Guid我們在預存程序中引用要用到這個Guid.

為方便可能在多處需要調用,我們專門寫一個預存程序
如下:

CREATE PROCEDURE spu_ConvertFileTimeToNormal
@ticks BIGINT,
@returnval varchar(40) output
AS

DECLARE @src varchar(255)
DECLARE @desc varchar(255)

DECLARE @object int
DECLARE @hr int
EXEC @hr = sp_OACreate '{729ba6af-3eff-4b75-b43b-d951a190dbe6}',@object OUT

IF @hr = 0 --如果建立對象成功
BEGIN
   EXEC @hr = sp_OAMethod @object,'ConvertTime',@returnval OUT,@ticks
     print @returnval
     print @hr
   if(@hr <> 0)
    BEGIN
      EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
     SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
    END
  
   END

ELSE
BEGIN
   --print @hr
   print 'Create Object ConvertTime failed'

     EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
     SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
     RETURN
END

EXEC @hr = sp_OADestroy @object

IF @hr <> 0
BEGIN
    EXEC sp_OAGetErrorInfo @object
    RETURN
END

GO

這個時候我們還差最後一步註冊DLL了
在.net 命令列下輸入 regasm -codebase path

好了,現在我們就可以在其他預存程序中調用這個預存程序返回正常的時間了.
給個小例子:
EXEC spu_ConvertFileTimeToNormal @CreateTime,@NormalTime OUT   
@CreateTime:FileTime格式
@NormalTime :正常的時間格式字串(spu_ConvertFileTimeToNormal 預存程序傳回值)

這個簡單的小例子說明了我們怎麼樣在預存程序中調用DLL
是不是你解決問題又多了一個選擇了呢?

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.