专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »数据库 » 演练:使用托管代码创建存储过程 »正文

演练:使用托管代码创建存储过程

来源: 发布时间:星期二, 2009年2月3日 浏览:5次 评论:0
="t18">SQL Server 2005 数据库存储过程现在可以使用 .NET Framework 语言(如 Visual Basic、C# 和 C)在托管代码中进行编写使用托管代码编写存储过程称为 CLR 存储过程

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

本演练演示如下任务:

创建新“Windows 应用”项目

在托管代码中创建存储过程

将此存储过程部署到 SQL Server 2005 数据库

创建在数据库上测试存储过程脚本

查询数据库中数据以确认是否正确执行了存储过程

先决条件
若要完成本演练您需要:

到运行在 SQL Server 2005 的上 AdventureWorks 举例数据库连接有关更多信息请参见 如何:安装举例数据库

创建项目
创建新 SQL Server 项目
从“文件”菜单创建个新项目

选择“SQL Server 项目”将项目命名为 SQLCLRStoredProcedure 并单击“确定”有关更多信息请参见 如何:创建 SQL Server 项目

连接到 SQL Server 2005 数据库
本演练需要到运行在 SQL Server 2005 的上 AdventureWorks 举例数据库连接如果到 AdventureWorks 举例数据库连接在“服务器资源管理器”中可用则该连接会在 “添加数据库引用”对话框 中列出

注意
在默认情况下Microsoft SQL Server 中关闭了公共语言运行库 (CLR) 集成功能必须启用该功能才能使用 SQL Server 项目项若要启用 CLR 集成请使用 sp_configure 存储过程 clr enabled 选项有关更多信息请参见 启用 CLR 集成


连接到 AdventureWorks 举例数据库
完成“添加连接”对话框从而连接到包含在 SQL Server 2005 中 AdventureWorks 举例数据库有关更多信息请参见 添加/修改连接 (Microsoft SQL Server)

- 或 -

在“添加数据库引用”对话框中选择到 AdventureWorks 举例数据库个现有连接有关更多信息请参见 “添加数据库引用”对话框

创建 SQL Server 存储过程
创建了 SQL Server 项目后向其中添加个存储过程

创建 SQL Server 存储过程
从“项目”菜单中选择“添加新项”

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

键入 InsertCurrency 作为新存储过程“名称”

单击“添加”

使用以下代码替换代码编辑器中代码:

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

Visual Basic 复制代码
Imports
Imports .Data
Imports .Data.SqlClient
Imports .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, ModiedDate)" & _
" VALUES(@CurrencyCode, @Name)"

InsertCurrencyCommand.Connection = conn

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


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



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

InsertCurrencyCommand.Connection = conn;

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

#using <.dll>
#using <.Data.dll>
#using <.Xml.dll>

using ;
using ::Data;
using ::Data::Sql;
using ::Data::SqlClient;
using ::Data::SqlTypes;
using 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 StoredProcedures
{
public:
[SqlProcedure]
void InsertCurrency_CPP(SqlString currencyCode, SqlString name)
{
SqlConnection ^conn = gc SqlConnection("context connection=true");

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

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

conn->Open;
insertCurrencyCommand->ExecuteNonQuery;

conn->Close;
}
};

部署、执行和调试存储过程
创建新存储过程后可以通过按 F5 生成该存储过程将其部署到 SQL Server 并进行调试首先在位于项目“TestScripts”文件夹中“Test.sql”文件中添加执行和测试存储过程代码在 Visual C此文件名为“debug.sql”有关创建测试脚本更多信息请参见 如何:编辑 Test.sql 脚本以运行 SQL 对象

有关调试 SQL 更多信息请参见 调试 SQL 数据库对象

部署并运行 InsertCurrency 存储过程
对于 Visual Basic 和 Visual C#在“解决方案资源管理器”中展开“TestScripts”文件夹再双击“Test.sql”文件

对于 Visual C在“解决方案资源管理器”中双击“debug.sql”文件

使用以下代码替换“Test.sql”(在 Visual C 中为“debug.sql”)文件中代码:

复制代码
EXEC InsertCurrency 'AAA', 'Currency Test'
SELECT * from Sales.Currency where CurrencyCode = 'AAA'按 F5 生成、部署并调试该存储过程有关不进行调试直接部署信息请参见 如何:将 SQL Server 项目项部署到 SQL Server 中

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

标签:

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: