动态网站制作指南



当前位置 > 网站建设学院 > 网络编程 > 数据库 > SQL技巧 Rss
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket

如何:创建和运行 CLR SQL Server 存储过程


发表日期:2009-2-2


如何:创建和运行 CLR SQL Server 存储过程

通过将“存储过程”项添加到 SQL Server 项目,可以创建 SQL 存储过程。成功部署到 SQL Server 之后,可通过与任何其他存储过程相同的方式调用和执行在托管代码中创建的存储过程。

注意 
在默认情况下,Microsoft SQL Server 中关闭了公共语言运行库 (CLR) 集成功能。必须启用该功能才能使用 SQL Server 项目项。若要启用 CLR 集成,请使用 sp_configure 存储过程的“启用 clr”选项。有关更多信息,请参见启用 CLR 集成。
 
注意 
显示的对话框和菜单命令可能会与帮助中的描述不同,具体取决于您现用的设置或版本。若要更改设置,请在“工具”菜单上选择“导入和导出设置”。有关更多信息,请参见 Visual Studio 设置。
 

创建 SQL Server 存储过程
创建 SQL Server 存储过程
打开一个现有的“SQL Server 项目”,或者创建一个新项目。有关更多信息,请参见如何:创建 SQL Server 项目。

从“项目”菜单中选择“添加新项”。

在“添加新项”对话框 中选择“存储过程”。

键入新存储过程的“名称”。

添加执行存储过程时要运行的代码。请参见下面的示例。

注意 
C++ 示例在编译时必须使用 /clr:safe 编译器选项。
 

对于 Visual Basic 和 Visual C#,在“解决方案资源管理器”中,打开“TestScripts”文件夹,再双击“Test.sql”文件。

对于 Visual C++,在“解决方案资源管理器”中,打开“debug.sql”文件。

将代码添加到“Test.sql”(Visual C++ 中为“debug.sql”)文件中以执行存储过程。请参见下面的第二个示例。

按 F5 生成、部署并调试该存储过程。有关不进行调试直接部署的信息,请参见如何:将 SQL Server 项目项部署到 SQL Server 中。

在“输出”窗口中查看结果,然后选择“从此处显示输出:数据库输出”。

示例
下面的代码示例创建一个存储过程,向 Adventure Works 示例数据库的 Currency 表中插入一条记录。并在创建了该存储过程之后,将其部署到 SQL Server。有关更多信息,请参见如何:将 SQL Server 项目项部署到 SQL Server 中。

Visual Basic 复制代码
Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.SqlTypes
Imports Microsoft.SqlServer.Server

Partial Public Class StoredPRocedures

    <SqlProcedure()> _
    Public Shared Sub InsertCurrency( _
        ByVal currencyCode As SqlString, ByVal name As SqlString)

        Using conn As New SqlConnection("context connection=true")

            Dim InsertCurrencyCommand As New SqlCommand()
            Dim currencyCodeParam As New SqlParameter("@CurrencyCode", SqlDbType.NVarChar)
            Dim nameParam As New SqlParameter("@Name", SqlDbType.NVarChar)

            currencyCodeParam.Value = currencyCode
            nameParam.Value = name


            InsertCurrencyCommand.CommandText = _
                "INSERT Sales.Currency (CurrencyCode, Name, ModifiedDate)" & _
                " VALUES(@CurrencyCode, @Name)"

            InsertCurrencyCommand.Connection = conn

            conn.Open()
            InsertCurrencyCommand.ExecuteNonQuery()
            conn.Close()
        End Using
    End Sub
End Class
C# 复制代码
using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;


public partial class StoredProcedures
{
    [SqlProcedure()]
    public static void InsertCurrency_CS(
        SqlString currencyCode, SqlString name)
    {
        using (SqlConnection conn = new SqlConnection("context connection=true"))
        {
            SqlCommand InsertCurrencyCommand = new SqlCommand();
            SqlParameter currencyCodeParam = new SqlParameter("@CurrencyCode", SqlDbType.NVarChar);
            SqlParameter nameParam = new SqlParameter("@Name", SqlDbType.NVarChar);

 

            InsertCurrencyCommand.CommandText =
                "INSERT Sales.Currency (CurrencyCode, Name, ModifiedDate)" +
                " VALUES(@CurrencyCode, @Name)";

            InsertCurrencyCommand.Connection = conn;

            conn.Open();
            InsertCurrencyCommand.ExecuteNonQuery();
            conn.Close();
        }
    }
}
C++ 复制代码
#include "stdafx.h"

#using <System.dll>
#using <System.Data.dll>
#using <System.xml.dll>

using namespace System;
using namespace System::Data;
using namespace System::Data::Sql;
using namespace System::Data::SqlClient;
using namespace System::Data::SqlTypes;
using namespace Microsoft::SqlServer::Server;

// In order to debug your Stored Procedure, add the following to your debug.sql file:
//
// EXEC InsertCurrency_CPP 'AAA', 'Currency Test'
// SELECT * FROM Sales.Currency WHERE CurrencyCode = 'AAA'

public ref class StoredProcedures
{
public:
    [SqlProcedure]
    static void InsertCurrency_CPP(SqlString currencyCode, SqlString name)
    {
        SqlConnection ^conn = gcnew SqlConnection("context connection=true");

        SqlCommand ^insertCurrencyCommand = gcnew SqlCommand();
        SqlParameter ^currencyCodeParam =
            gcnew SqlParameter("@CurrencyCode", SqlDbType::NVarChar);
        SqlParameter ^nameParam =
            gcnew SqlParameter("@Name", SqlDbType::NVarChar);

        insertCurrencyCommand->CommandText =
            "insert Sales.Currency(CurrencyCode, Name, ModifiedDate)" +
            " values(@CurrencyCode, @Name)";
        insertCurrencyCommand->Connection = conn;

        conn->Open();
        insertCurrencyCommand->ExecuteNonQuery();

        conn->Close();
    }
};

将用于执行和测试存储过程的代码添加到“Test.sql”(Visual C++ 中为“debug.sql”)文件中,该文件在项目的“TestScripts”文件夹中。例如,如果部署了一个存储过程,则可以通过调用 EXEC <StoredProcedureName> 并传入任何预期的参数来运行该过程。如果存储过程没有返回任何值,则请插入一段其他代码以验证存储过程是否对数据产生影响。

 复制代码
EXEC InsertCurrency 'AAA', 'Currency Test'
SELECT * from Sales.Currency where CurrencyCode = 'AAA'

关注此文的读者还看过:
·2012-2-4 10:01:08 经验分享:Informix和Oracle存储过程的异同
·2012-2-4 10:00:58 两表(多表)关联update的写法
·2012-2-4 10:00:54 学习SQL SERVER的存储过程-之一认识存储过程语法
·2012-2-4 10:00:50 SQL存储过程和触发不能使用USE的应对方法
·2012-2-4 10:00:31 演练:使用托管代码创建存储过程
·2012-2-4 10:00:28 MS SQL Server存储过程参数的隐式类型转换
·2012-2-4 10:00:09 SQL Server如何执行带参数的存储过程?
·2012-2-4 9:58:19 如何:调试 SQL CLR 存储过程
·2012-2-4 9:58:17 数据库连接字符串大全
站长推荐 PS笔刷下载 在线翻译 系统进程 广告代码
  发表评论
姓 名: 验证码:
内 容:
教程搜索服务
项目外包信息
·ecshop+Discuz! X2+ Home会员整
·寻找网站建设团队或者个人合伙
·LOGO设计外包
·企业网后台程序外包
·ESO关键词优化
·寻中高端网页设计及美工长期合作
·网页美工
·寻求程序合作
·全球连锁餐饮集团网站改版
·预算5-10万元的基于威客、2.0、
·外包一个新闻发布网站 急
·招长期兼职资深设计师合作
·FLASH外包
·产品高端场景摄影
·寻找asp.net开发高手
发布信息 浏览信息
邮件订阅服务
输入你的邮件地址,你将不会错过任何关于<SQL技巧>的内容


数据教程文章分类
SQL教程
SQL技巧
SQL安全
SQL文摘
Oracle教程
MySQL教程
Access教程
DB2教程
Sybase教程
站长工具:Google PR查询|Alexa排名查询|网站速度测试|CSS在线编辑器|OPEN参数生成器|弹出式窗口代码产生器|密码登录生成器|在线按钮生成器|Meta标签生成器|邮箱图标在线生成|多色彩特效字代码生成器|网页代码调试器|在线FTP登陆|Flash取色器|配色代码对照表|配色辞典|CSS生成器|CSS在线压缩|广告代码|框架网页代码生成器|js/vbs加密|md5加密|进制转换|UTF-8 转换工具|在线调色板|Html转换js|Html转换asp|Html转换php|Html转换perl
实用工具:汉字翻译拼音|拼音字典|在线翻译|天气预报|火星文|在线网速测试|符号对照表|个税计算|理财工具|黄金价格|购房银行按揭利率计算|汇率查询|经典小工具|汉字简繁转换|普通单位换算|公制单位换算|生辰老黄历|国内电话区号|国家代码与域名缩写|文字加密解密|元素周期表|健康查询|世界时间|全国各地车牌查询|全国车辆交通违章查询|万年历|二十四节气|汉字横竖排版|手机号码查询|计算器|ip搜索
广告刊登 | 版权声明 | 联系我们 | 加入收藏 | RSS订阅
Copyright © 2000-2012 www.knowsky.com All rights reserved | 沪ICP备05001343号