SQL2005集成了CLR功能,即可以调用.NET写的DLL库。这样,数据库有动作时,通过触发器可以调用该DLL生成的Assembly程序集,通知外部程序。通常步骤如下: 
第一步: 
      1. 选择SQL Servecr2005 配置工具=> Sql Servecr 外围应用配置器 
      2. 选择功能的外围应用配置器 
      3. 选择CLR集成中 启用CLR集成 
第二步: 
      1. 在VS.NET环境中部署 SQL Server 项目将在为该项目指定的数据库中注册程序集。 
      2. 创建类,如下 
public class Class1 

    public static string MySplit(int filedIndex, string filedName) 
    { 
        //filedIndex从1开始 
        try 
        { 
            if (filedIndex == null || filedIndex <= 0 || filedName == null || filedName == "") 
            { 
                return ""; 
            } 
            else 
            { 
                return filedName.Split('|')[filedIndex - 1].Trim(); 
            }         } 
        catch 
        { 
            return ""; 
        } 
    } 

      注: 需去掉该类的命名空间 
      3. 生成得到程序集 ClassLibrary1.dll 第三步: 
      打开SQL Server 选择一个数据库,使用如下语句,创建程序集 
        CREATE ASSEMBLY Class1 
        AUTHORIZATION [dbo] 
        FROM 'C:\ClassLibrary1.dll' 
        WITH PERMISSION_SET = SAFE 
第四步: 
      创建函数 
        CREATE FUNCTION dbo.MySplit 
      ( 
            @filedIndex AS INT, 
            @filedName AS NVARCHAR(255) 
      ) 
      RETURNS NVARCHAR(255) 
      AS 
      EXTERNAL NAME Class1.Class1.MySplit 
      注: Class1.Class1.MySplit 
          Class1 为程序集名; 
          Class1 为在C#中创建的类名; 
          MySplit 为方法名; 第五步,触发器调用函数。 
请问各位,,在Oracle或者mySql中能否实现上述功能,如何实现????????????????

解决方案 »

  1.   

    http://www.oracle.com/technology/tech/dotnet/ode/index.html
      

  2.   

    从Oracle8开始提供了直接从PL/SQL中调用外部C语言过程,允许开发人员用PL/SQL进行使用C语言编制的程序模块。从Oracle8i开始,又引入了Java程序。
    如果在应用上要用到不适合用PL/SQL语言的话,这时就要使用其它语言进行编制,然后由PL/SQL作为外部例程进行调用。 
      在Oracle8之前的版本,PL/SQL和其它语言的唯一通信是借助于DBMS_PIPE和DBMS_ALERT包来实现,在使用之前必需建立一个OCI接口或预编译器编制的监护程序,使用比较复杂。外部例程的出现,只需在PL/SQL中建立一个函数映射到外部例程对应的函数,就像普通的PL/SQL函数使用一样,简化了使用过程
    使用COM对象说明 
      COM对象设计都会提供了三个基本操作给开发人员使用,分别为:获取属性值,设置属性值(只读属性除外),调用方法。Oracle数据库在Windows的平台下提供了操作COM对象的接口,属于C语言外部例程模式。 
      

  3.   

    谢谢楼上,与.NET开发环境的交互可以实现吗?
      

  4.   

    zhangwonderful不是已经给出参考了吗?