• [转载]sqlserver中用c#编写存储过程


    体验:用C#写存储过程(VS.NET 2005)

    http://www.cnblogs.com/ugoer/archive/2005/04/01/129986.html

    SQL2005中内置CLR, 因此可以用更高级的托管语言编写SP, Trigger,Function....等
    下面是我用C#编写SP的过程:

    环境: Win 2003 + SQL Server 2005 CTP(今年2月版本) +VS.NET 2005 CTP(今年2月版本)  +FW 2.0.50110      beta2

    首先接上一篇链接的数据库,新建一个SQL Server Project


    接下来会提示要链接的数据库对话框:

    如果要链接的数据库不在列表中,可以Add New,链接完数据库后将得到如下工程


    添加一个StoredProcedure Item,目前支持的Item有:

    此时可以在数据库中添加一个表,如: table1,字段如下:


    给刚才添加的 StoredProcedure Item 中添加如下代码,其中包括两个存储过程,和一个函数

    using System;
    using System.Data;
    using System.Data.Sql;
    using System.Data.SqlServer;
    using System.Data.SqlTypes;


    public partial class StoredProcedures
    {
        [SqlProcedure]
        
    public static void Hello()
        
    {
            SqlContext.GetPipe().Send(
    "hello ,uGoer!");
        }


        [SqlProcedure]
        
    public static void InsertData(SqlString name)
        
    {
            SqlCommand InsertCurrencyCommand 
    = SqlContext.GetCommand();
            InsertCurrencyCommand.CommandText 
    = "INSERT INTO table1 (Name, addDate) VALUES ('"+name.Value+"', '" + DateTime.Now.ToString() + "')";
            InsertCurrencyCommand.ExecuteNonQuery();
        }


        [SqlFunction]
        
    public static SqlString testFunction()
        
    {
            
    return "hello , cnBlogs.com";
        }

    }
    ;

    下一步就是编译部署用C#写的存储过程与函数,在目前的这个版本中VS.NET可以比较顺利的完成,步骤如下:
    选择build-->Deploy 工程名称
    部署完成以后再看看数据库吧,呵呵,刚才写的SP, Function都到里面去了


    最后测试一下调用C#写的存储过程,在SQL Server Project建立后会自动建立Test Scripts文件夹并且包含Test.sql文件,工具MSDN的说法可以在里面直接写T-SQL进行测试,好,下面我们就看看,在Test.sql中添加如下数据:
    EXEC Hello
    EXEC InsertData 'ugoer'
    EXEC InsertData 'cnBlogs'

    --看看我们添加的数据
    SELECT * FROM table1

    然后在Debug下 开始 Start 嘿嘿,等等吧,VS 2005太吃内存了,建议512M的机子跑。
    看看我们得到了什么:

    哈哈,一切正常看来以后写 存储过程方便了,运用托管语言封装T-SQL,可以利用托管语言对数据的处理能力,比如数据库过滤,判断,循环,等等等


    另:如果Debug出现这样的提示:use sp_configure 'clr enabled',请先打开 clr enabled,方法如下:

    EXEC sp_configure 'show advanced options'1
    GO
    RECONFIGURE
    GO

      
    EXEC sp_configure 'clr enabled'1
    GO
    RECONFIGURE
    GO

    要关闭clr enabled,可以使用

    EXEC sp_configure 'clr enabled'0
    GO
    RECONFIGURE
    GO
  • 相关阅读:
    C++内存管理
    多线程和多进程的区别(C++)
    如何用C语言封装 C++的类,在 C里面使用
    C/C++将一个整型数组拼接成一个字符串
    C代码中如何调用C++ C++中如何调用C
    Application对象的使用-数据传递以及内存泄漏
    《鸟哥的Linux私房菜》读书笔记二
    《鸟哥的Linux私房菜》读书笔记一
    greenDaoMaster的学习研究
    Handler 引起的内存泄露
  • 原文地址:https://www.cnblogs.com/laogao/p/2315891.html
Copyright © 2020-2023  润新知