sql server 擴展存儲過程


C#代碼:

using Microsoft.SqlServer.Server;
using System;
using System.Collections.Generic;
using System.Data.SqlTypes;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
 
 
public partial class UserDefinedFunctions
{
    public static SqlString ExampleUDF()
    {
        return new SqlString("Hello");
    }
    [SqlFunction(IsDeterministic = true, IsPrecise = true)]
    public static bool RegExIsMatch(string pattern, string matchString)
    {
        Regex reg = new Regex(pattern.TrimEnd(null));
        return reg.Match(matchString.TrimEnd(null)).Success;
    }
}

SQL SERVER 代碼

加載程序集

USE InvestorRelations
CREATE ASSEMBLY ExampleUDF
FROM 'E:\學習\SessionTest\TestKZCCGC\bin\Debug\TestKZCCGC.dll'

創建函數

CREATE FUNCTION ExampleUDFTwo()
RETURNS nvarchar(1000)
AS EXTERNAL NAME ExampleUDF.UserDefinedFunctions.ExampleUDF;

 表值函數:

C#代碼

using Microsoft.SqlServer.Server;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data.SqlTypes;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
 
 
public partial class UserDefinedFunctions
{
    [SqlFunction(FillRowMethodName = "FillRow")]
    public static IEnumerable DirectoryList(string sRootDir, string sWildCard, bool bIncludeSubDirs)
    {
        ArrayList aFileArray = new ArrayList();
        DirectorySearch(sRootDir, sWildCard, bIncludeSubDirs, aFileArray);
        return aFileArray;
    }
    private static void DirectorySearch(string directory, string sWildCard, bool bIncludeSubDirs, ArrayList aFileArray)
    {
        GetFiles(directory, sWildCard, aFileArray);
        if (bIncludeSubDirs)
        {
            foreach (string d in Directory.GetDirectories(directory))
            {
                DirectorySearch(d, sWildCard, bIncludeSubDirs, aFileArray);
            }
        }
    }
    private static void GetFiles(string d, string sWildCard, ArrayList aFileArray)
    {
        foreach (string f in Directory.GetFiles(d, sWildCard))
        {
            FileInfo fi = new FileInfo(f);
            object[] column = new object[2];
            column[0] = fi.FullName;
            column[1] = fi.LastWriteTime;
            aFileArray.Add(column);
        }
    }
    private static void FillRow(object obj, out string filename, out DateTime date)
    {
        object[] row = (object[])obj;
        filename = (string)row[0];
        date = (DateTime)row[1];
    }
}

SQL server 代碼

ALTER DATABASE InvestorRelations
SET TRUSTWORTHY ON;
 
 
USE InvestorRelations
 
CREATE ASSEMBLY fExampleTVF
FROM 'E:\學習\SessionTest\TestKZCCGC\bin\Debug\TestKZCCGC.dll'
WITH PERMISSION_SET=EXTERNAL_ACCESS
  
CREATE FUNCTION fTVFExample(
@RootDir nvarchar(max),
@WildCard nvarchar(max),
@IncludeSubDirs bit
)
RETURNS TABLE (
    FileName nvarchar(max),
    LastWriteTime datetime
)
AS EXTERNAL NAME fExampleTVF.UserDefinedFunctions.DirectoryList
 
SELECT FILENAME,LASTWRITETIME
FROM dbo.fTVFExample('E:\學習','*.ppt',0)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM