HOW TO:使用 Common Language Run-time 整合建立和執行 SQL Server 預存程序
您可以將 [預存程序] 項目加入至 SQL Server Common Language Runtime (SQL CLR) 資料庫專案,建立 SQL 預存程序。 順利部署至執行 SQL Server 的電腦之後,便可如同其他預存程序般,呼叫和執行以 Managed 程式碼所建立的預存程序。
注意事項 |
---|
根據目前使用的設定與版本,您所看到的對話方塊與功能表命令可能會與 [說明] 中所描述的不同。 若要變更設定,請從 [工具] 功能表中選取 [匯入和匯出設定]。 如需詳細資訊,請參閱使用設定。 |
建立 SQL Server 預存程序
若要建立 SQL Server 預存程序
開啟現有的 SQL CLR 資料庫專案,或建立一個新專案。 如需詳細資訊,請參閱HOW TO:針對使用 SQL Server Common Language Run-time 整合的資料庫物件建立專案。
在 [專案] 功能表中選取 [加入新項目]。
在 [加入新項目] 對話方塊中,選取 [預存程序]。
為新的預存程序輸入 [名稱]。
加入執行預存程序時執行的程式碼。 請參閱遵循此程序的第一個範例。
開啟 [方案總管] 中的 [TestScripts] 資料夾,並按兩下 Test.sql 檔案。
注意事項 您可以指定其他指令碼做為預設偵錯指令碼。 如需詳細資訊,請參閱HOW TO:編輯 Test.sql 指令碼以執行使用 SQL Server Common Language Run-time 整合的物件。
將程式碼加入至 Test.sql 檔案,以執行預存程序。 請參閱遵循此程序的第二個範例。
按下 F5,即可建置、部署和偵錯預存程序。 如需如何在不偵錯的情況下進行部署的詳細資訊,請參閱 HOW TO:將 SQL CLR 資料庫專案項目部署至 SQL Server。
重要事項 SQL Server 2005 和 SQL Server 2008 僅支援使用 .NET Framework 2.0、3.0 或 3.5 版所建置的 SQL Server 專案。 如果您嘗試部署SQL Server專案,SQL Server 2005或SQL Server 2008,將顯示錯誤消息:Deploy error (SQL01268): .NET SqlClient Data Provider: Msg 6218, Level 16, State 3, Line 1 CREATE ASSEMBLY for assembly 'AssemblyName' failed because assembly 'AssemblyName' failed verification. Check if the referenced assemblies are up-to-date and trusted (for external_access or unsafe) to execute in the database(在進行校驗是您要部署的程式集的名稱)。 如需詳細資訊,請參閱HOW TO:針對使用 SQL Server Common Language Run-time 整合的資料庫物件建立專案。
查看結果輸出視窗和選擇顯示輸出:資料庫輸出。
範例
下列程式碼範例會建立預存程序,將資料錄插入 Adventure Works 範例資料庫的 Currency 資料表。 建立預存程序之後,將它部署至 SQL Server。 如需詳細資訊,請參閱HOW TO:將 SQL CLR 資料庫專案項目部署至 SQL Server。
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.Parameters.Add(currencyCodeParam)
InsertCurrencyCommand.Parameters.Add(nameParam)
InsertCurrencyCommand.CommandText =
"INSERT Sales.Currency (CurrencyCode, Name, ModifiedDate)" &
" VALUES(@CurrencyCode, @Name, GetDate())"
InsertCurrencyCommand.Connection = conn
conn.Open()
InsertCurrencyCommand.ExecuteNonQuery()
conn.Close()
End Using
End Sub
End Class
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);
currencyCodeParam.Value = currencyCode;
nameParam.Value = name;
InsertCurrencyCommand.Parameters.Add(currencyCodeParam);
InsertCurrencyCommand.Parameters.Add(nameParam);
InsertCurrencyCommand.CommandText =
"INSERT Sales.Currency (CurrencyCode, Name, ModifiedDate)" +
" VALUES(@CurrencyCode, @Name, GetDate())";
InsertCurrencyCommand.Connection = conn;
conn.Open();
InsertCurrencyCommand.ExecuteNonQuery();
conn.Close();
}
}
}
將程式碼加入至專案中 TestScripts 資料夾的 Test.sql 檔案,以執行和測試預存程序。 例如,如果您部署一個預存程序,則呼叫 EXEC <StoredProcedureName>,並傳入任何所需參數,即可執行此預存程序。 如果預存程序沒有傳回任何值,請插入額外程式碼,驗證資料是否受預存程序影響。
注意事項 |
---|
如果使用 Visual C# 建立此範例,請將下列範例中的預存程序名稱取代為 InsertCurrency_CS。 |
EXEC InsertCurrency 'AAA', 'Currency Test'
SELECT * from Sales.Currency where CurrencyCode = 'AAA'
請參閱
工作
HOW TO:針對使用 SQL Server Common Language Run-time 整合的資料庫物件建立專案
HOW TO:使用 Common Language Run-time 整合建立和執行 SQL Server 觸發程序
HOW TO:使用 Common Language Run-time 整合建立和執行 SQL Server 彙總
HOW TO:使用 Common Language Run-time 整合建立和執行 SQL Server 使用者定義函式
HOW TO:使用 Common Language Run-time 整合建立和執行 SQL Server 使用者定義型別