亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

演練:使用托管代碼創建存儲過程

2024-07-21 02:44:41
字體:
來源:轉載
供稿:網友

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 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();
    }
};

 部署、執行和調試存儲過程
創建新的存儲過程后,可以通過按 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 中。

在“輸出窗口”中查看結果,然后選擇“從此處顯示輸出: 數據庫輸出”。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色婷婷亚洲mv天堂mv在影片| 国产精品久久久久久久久久小说| 亚洲电影免费观看高清| 国产精品久久久久久久久久尿| 97视频免费在线观看| 欧美激情aaaa| 国产99视频精品免视看7| 日本一区二三区好的精华液| 欧美中文在线免费| 91av视频导航| 欧美插天视频在线播放| 国产精品第七影院| 国产精品老牛影院在线观看| 亚洲成人免费网站| 国产免费一区二区三区香蕉精| 91精品国产色综合| 日韩有码在线视频| 日韩av中文字幕在线| 欧日韩不卡在线视频| 性欧美在线看片a免费观看| 精品亚洲一区二区三区在线观看| 久久精品视频中文字幕| 日韩欧美在线视频观看| 91亚洲一区精品| 日韩av黄色在线观看| 国产拍精品一二三| 久久69精品久久久久久久电影好| 亚洲免费视频一区二区| 欧美一级视频免费在线观看| 国产成+人+综合+亚洲欧洲| 国产精品欧美亚洲777777| 亚洲自拍偷拍在线| 国产精品视频播放| 91视频88av| 久久中国妇女中文字幕| 日日噜噜噜夜夜爽亚洲精品| 欧美成年人视频| 亚洲人线精品午夜| 欧美xxxx14xxxxx性爽| 亚洲欧洲高清在线| 97在线视频免费观看| 亚洲美女自拍视频| 欧美风情在线观看| 91久久在线视频| 色先锋资源久久综合5566| 欧美成人激情在线| 亚洲免费人成在线视频观看| 国产丝袜一区视频在线观看| 国产91色在线|免| 亚洲aⅴ男人的天堂在线观看| 91在线视频导航| 亚洲精品99久久久久| 欧美激情在线狂野欧美精品| 日韩欧美国产一区二区| 亚洲欧美日韩精品久久奇米色影视| 亚洲中国色老太| 国产精品91久久久久久| 91国产一区在线| 国产日韩欧美日韩| 91色视频在线导航| 亚洲伊人久久大香线蕉av| 亚洲a一级视频| 欧美激情精品久久久久久蜜臀| 亚洲综合视频1区| 欧美成人合集magnet| 久久亚洲国产精品成人av秋霞| 中文字幕精品在线视频| 日韩一区二区在线视频| 91av视频在线播放| 成人精品一区二区三区电影免费| 久久国产精品影视| 国产精品一区二区三区免费视频| 欧美日韩一区二区免费在线观看| 在线观看日韩视频| 韩剧1988在线观看免费完整版| 欧美日韩一区二区免费在线观看| 欧美日本国产在线| 色综合久久久久久中文网| 亚洲天堂av在线免费| 亚洲欧美国产另类| 欧美一级电影久久| 欧美午夜视频一区二区| 日韩欧美一区二区在线| 国产精品久久久久久亚洲调教| 精品二区三区线观看| 亚洲精品v天堂中文字幕| 欧美激情一级精品国产| 中文字幕久久久av一区| 国产精品爽黄69天堂a| 亚洲精品自拍视频| 欧美精品aaa| 色777狠狠综合秋免鲁丝| 亚洲人成网站777色婷婷| 欧美色视频日本高清在线观看| 欧美一乱一性一交一视频| 国产中文字幕日韩| 一本色道久久综合狠狠躁篇的优点| 国产精品久久久久久久久久三级| 亚洲aⅴ男人的天堂在线观看| 色久欧美在线视频观看| 97视频在线观看免费| 成人在线小视频| 国产主播喷水一区二区| 久热精品视频在线| 国产精品久久久久久久久久东京| 欧美日韩国产页| 人体精品一二三区| 日本三级韩国三级久久| 久久久精品免费| 国产成人精品免高潮费视频| 国产激情久久久久| 欧美一乱一性一交一视频| 国产免费一区二区三区在线观看| 97av在线视频免费播放| 日韩精品极品视频| 欧美激情视频网站| 日本欧美一二三区| 国产亚洲日本欧美韩国| 欧美激情免费看| 亚洲精品wwww| 欧美久久精品一级黑人c片| 国产精品高清网站| 日韩电影免费在线观看| 国产剧情日韩欧美| 亚洲人成亚洲人成在线观看| 欧美精品免费播放| 精品国产福利视频| 中日韩午夜理伦电影免费| 亚洲无线码在线一区观看| 成人免费xxxxx在线观看| 国产最新精品视频| 亚洲欧美日韩在线高清直播| 日韩中文字在线| 中文字幕久热精品在线视频| 成人精品一区二区三区电影免费| 91国产视频在线| 97国产一区二区精品久久呦| 久久躁狠狠躁夜夜爽| 久久久久久网址| 欧美日韩黄色大片| 日韩三级成人av网| 欧美成人性生活| 欧美大胆a视频| 国产在线精品一区免费香蕉| 成人xvideos免费视频| 精品福利樱桃av导航| 久久精品91久久香蕉加勒比| 日本a级片电影一区二区| 欧美性在线观看| 日本欧美一级片| 欧美一级视频在线观看| 色琪琪综合男人的天堂aⅴ视频| 国产成人avxxxxx在线看| 亚洲女在线观看| 97免费中文视频在线观看| 国产欧美日韩免费看aⅴ视频| 欧美xxxx做受欧美.88| 欧美成人精品激情在线观看| 欧美精品video| 亚洲精品日产aⅴ| 亚洲性视频网址| 亚洲欧美日韩在线一区| 久久夜色精品国产亚洲aⅴ| 国产不卡精品视男人的天堂|