日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

如何:創建和運行 CLR SQL Server 用戶定義的類型

瀏覽:319日期:2023-11-07 10:51:32

通過將“用戶定義的類型”添加到 SQL Server 項目,可以創建 SQL 用戶定義的類型。部署成功后,可以將該類型用于可使用系統類型的所有上下文,包括列定義、變量、參數、函數結果、光標、觸發器和復制等。UDT 為用戶提供了 SQL Server 數據類型系統的擴展性,還提供了定義復雜結構類型的功能。

注意; 在默認情況下,Microsoft SQL Server 中關閉了公共語言運行庫 (CLR) 集成功能。必須啟用該功能才能使用 SQL Server 項目項。若要啟用 CLR 集成,請使用 sp_configure 存儲過程的“啟用 clr”選項。有關更多信息,請參見啟用 CLR 集成。注意; 顯示的對話框和菜單命令可能會與幫助中的描述不同,具體取決于您現用的設置或版本。若要更改設置,請在“工具”菜單上選擇“導入和導出設置”。有關更多信息,請參見 Visual Studio 設置。

創建用戶定義的類型創建 SQL 用戶定義的類型打開一個現有的“SQL Server 項目”,或者創建一個新項目。有關更多信息,請參見如何:創建 SQL Server 項目。

從“項目”菜單中選擇“添加新項”。

在“添加新項”對話框 中選擇“用戶定義的類型”。

為新的 UDT 鍵入“名稱”。

添加用于定義和創建 UDT 的代碼。請參見下面的第一個示例。

注意; C++ 示例在編譯時必須使用 /clr:safe 編譯器選項。

對于 Visual Basic 和 Visual C#,在“解決方案資源管理器”中,打開“TestScripts”文件夾,再雙擊“Test.sql”文件。

對于 Visual C++,在“解決方案資源管理器”中,雙擊“debug.sql”文件。

將代碼添加到“Test.sql”(Visual C++ 中為“debug.sql”)文件中以執行 UDT。請參見下面的第二個示例。

按 F5 生成、部署和調試 UDT。有關不進行調試直接部署的信息,請參見如何:將 SQL Server 項目項部署到 SQL Server 中。

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

示例此示例創建一個 Point 類型,該類型的用法與其他簡單類型一樣。使用 Serializable 和 SqlUserDefinedTypeAttribute 屬性來修飾這個類聲明。SqlUserDefinedTypeAttribute 的 Format 屬性決定了 UDT 的存儲格式。該類型通過實現 Parse 和 ToString 方法來實現字符串轉換。此外,該類型還實現兩個屬性過程,以便為此類所表示的點獲取和設置 X 和 Y 的值。

Visual Basic 復制代碼Imports SystemImports System.Data.SqlTypesImports Microsoft.SqlServer.Server

<Serializable()> _<SqlUserDefinedType(Format.Native)> _Public Structure Point Implements INullable

Private m_x As Int32 Private m_y As Int32 Private is_Null As Boolean

Public Property X() As Int32 Get Return (Me.m_x) End Get Set(ByVal Value As Int32) m_x = Value End Set End Property

Public Property Y() As Int32 Get Return (Me.m_y) End Get Set(ByVal Value As Int32) m_y = Value End Set End Property

Public ReadOnly Property IsNull() As Boolean Implements INullable.IsNull Get Return is_Null End Get End Property

Public Shared ReadOnly Property Null() As Point Get Dim pt As Point = New Point pt.is_Null = True Return pt End Get End Property

Public Overrides Function ToString() As String If Me.IsNull() Then Return Nothing Else Return Me.m_x & ':' & Me.m_y End If End Function

Public Shared Function Parse(ByVal s As SqlString) As Point If s = SqlString.Null Then Return Null End If

If s.ToString() = SqlString.Null.ToString() Then Return Null End If

If s.IsNull Then Return Null End If

'Parse input string here to separate out coordinates Dim str As String = Convert.ToString(s) Dim xy() As String = str.Split(':'c)

Dim pt As New Point() pt.X = CType(xy(0), Int32) pt.Y = CType(xy(1), Int32) Return (pt) End Function

Public Function Quadrant() As SqlString

If m_x = 0 And m_y = 0 Then Return 'centered' End If

Dim stringResult As String = ''

Select Case m_x Case 0 stringResult = 'center' Case Is > 0 stringResult = 'right' Case Is < 0 stringResult = 'left' End Select

Select Case m_y Case 0 stringResult = stringResult & ' center' Case Is > 0 stringResult = stringResult & ' top' Case Is < 0 stringResult = stringResult & ' bottom' End Select

Return stringResult End FunctionEnd StructureC# 復制代碼using System;using System.Data.SqlTypes;using Microsoft.SqlServer.Server;

[Serializable()][SqlUserDefinedType(Format.Native)]public struct Point : INullable{ private Int32 m_x; private Int32 m_y; private bool is_Null;

public Int32 X { get { return (this.m_x); } set { m_x = value; } }

public Int32 Y { get { return (this.m_y); } set { m_y = value; } }

public bool IsNull { get { return is_Null; } }

public static Point Null { get { Point pt = new Point(); pt.is_Null = true; return (pt); } }

public override string ToString() { if (this.IsNull) { return 'NULL'; } else { return this.m_x + ':' + this.m_y; } }

public static Point Parse(SqlString s) { if (s.IsNull) { return Null; }

// Parse input string here to separate out coordinates string str = Convert.ToString(s); string[] xy = str.Split(':');

Point pt = new Point(); pt.X = Convert.ToInt32(xy[0]); pt.Y = Convert.ToInt32(xy[1]); return (pt); }

public SqlString Quadrant() { if (m_x == 0 && m_y == 0) { return 'centered'; }

SqlString stringReturn = '';

if (m_x == 0) { stringReturn = 'center'; } else if (m_x > 0) { stringReturn = 'right'; } else if (m_x < 0) { stringReturn = 'left'; }

if (m_y == 0) { stringReturn = stringReturn + ' center'; } else if (m_y > 0) { stringReturn = stringReturn + ' top'; } else if (m_y < 0) { stringReturn = stringReturn + ' bottom'; }

return stringReturn; }}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::SqlTypes;using namespace Microsoft::SqlServer::Server;

// In order to debug your User-Defined Types, add the following to your debug.sql file://// CREATE TABLE test_table (column1 Point)//// INSERT INTO test_table (column1) VALUES ('1:2')// INSERT INTO test_table (column1) VALUES ('-2:3')// INSERT INTO test_table (column1) VALUES ('-3:-4')//// SELECT column1.Quadrant() FROM test_table//// DROP TABLE test_table//[Serializable][SqlUserDefinedType(Format::Native)]public value struct Point : public INullable{private: Int32 m_x; Int32 m_y; bool is_Null;

public: property Int32 X { Int32 get() { return (this->m_x); } void set(Int32 value) { m_x = value; } }

property Int32 Y { Int32 get() { return (this->m_y); } void set(Int32 value) { m_y = value; } }

virtual property bool IsNull { bool get() { return is_Null; } }

static property Point Null { Point get() { Point pt; pt.is_Null = true; return (pt); } }

virtual String ^ToString() override { if (this->IsNull) { return 'NULL'; } else { return this->m_x + ':' + this->m_y; } }

static Point Parse(SqlString s) { if (s.IsNull) { return Null; }

// Parse input string here to separate out coordinates String ^str = Convert::ToString(s); array<String ^> ^xy = str->Split(':');

Point pt; pt.X = Convert::ToInt32(xy[0]); pt.Y = Convert::ToInt32(xy[1]); return (pt); }

SqlString Quadrant() { if (m_x == 0 && m_y == 0) { return 'centered'; }

SqlString stringReturn = '';

if (m_x == 0) { stringReturn = 'center'; } else if (m_x > 0) { stringReturn = 'right'; } else if (m_x < 0) { stringReturn = 'left'; }

if (m_y == 0) { stringReturn = stringReturn + SqlString(' center'); } else if (m_y > 0) { stringReturn = stringReturn + SqlString(' top'); } else if (m_y < 0) { stringReturn = stringReturn + SqlString(' bottom'); }

return stringReturn; }};

將用于執行和測試用戶定義類型 (Point) 的代碼添加到“Test.sql”(Visual C++ 中為“debug.sql”)文件中,該文件在項目的“TestScripts”文件夾中。例如,若要檢查新類型,可以創建一個使用此類型的表。下面的示例演示如何在創建表的過程中使用 Point 類型。

復制代碼CREATE TABLE test_table (column1 Point)go

INSERT INTO test_table (column1) VALUES ('1:2')INSERT INTO test_table (column1) VALUES ('-2:3')INSERT INTO test_table (column1) VALUES ('-3:-4')

select column1.Quadrant() from test_table

標簽: Sql Server 數據庫
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
乱一区二区av| 日本不卡一二三区黄网| 视频在线在亚洲| 国产精品视区| 欧美日韩国产观看视频| 久久国产精品美女| 国产麻豆一区二区三区| 久久精品999| 亚洲区第一页| 欧美国产精品| 欧美aa在线视频| 精品91福利视频| 国产精品一区二区精品| 久久久免费人体| 蜜臀精品一区二区三区在线观看 | 91亚洲精品在看在线观看高清| 久久亚州av| 黑丝一区二区三区| 日韩中文av| 日韩一区中文| 精品亚洲精品| 好吊日精品视频| 国产精品99久久免费| 日韩不卡免费高清视频| 99国产精品视频免费观看一公开| 伊人久久大香伊蕉在人线观看热v| 日本不卡中文字幕| 国产中文在线播放| 国产午夜精品一区二区三区欧美| 国产精品多人| 欧美黄色精品| 国产精品一区三区在线观看| 国产精品一区二区三区四区在线观看| 亚洲欧洲日韩精品在线| 麻豆9191精品国产| 亚洲国内欧美| 日韩毛片视频| 日韩久久电影| 国产亚洲高清在线观看| 91精品成人| 精品国产日韩欧美精品国产欧美日韩一区二区三区 | 亚洲精品自拍| 四虎精品一区二区免费| 999视频精品| 亚洲区第一页| 色爱av综合网| 蜜芽一区二区三区| 国产一区不卡| 国产亚洲一区二区三区啪| 亚洲一级少妇| 久久国际精品| 黄色av一区| 欧美亚洲一区二区三区| 亚洲天堂1区| 国产激情综合| 香蕉久久久久久久av网站| 国产不卡精品在线| 久久精品99国产精品日本| 国产国产精品| 欧美日韩尤物久久| 最新亚洲激情| 高潮久久久久久久久久久久久久| 日本欧洲一区二区| 伊人影院久久| 亚洲黑丝一区二区| 亚洲精品**中文毛片| 国产精品一区二区精品视频观看| 日本国产欧美| 国产乱码精品一区二区亚洲| 免费日本视频一区| 日本欧美在线看| 日本综合精品一区| 日韩国产欧美在线播放| 日韩高清一级| 国产精一区二区| 久久精品二区亚洲w码| 国产精品亚洲成在人线| 久久国产精品色av免费看| 国产欧美一区二区色老头| 欧美日韩一区自拍| 久久久免费人体| 国产va在线视频| 国产一区二区三区不卡视频网站 | 久久精品国产免费| 在线天堂中文资源最新版| 久久亚洲精品中文字幕| 都市激情国产精品| 亚洲国产日韩欧美在线| 香蕉久久精品| 日韩精品欧美大片| 国产精品一区二区三区www| 日本一区二区高清不卡| 国产综合激情| 日韩精品a在线观看91| 国产精品久久久久久av公交车| 麻豆精品在线| 亚洲黄色影院| 国产精品美女在线观看直播| 加勒比视频一区| 免费精品视频在线| 国产激情久久| 天堂网在线观看国产精品| 亚洲三级毛片| 欧美激情久久久久久久久久久| 欧美特黄一级大片| 国产精品一页| 尤物在线精品| 成人av三级| 91精品麻豆| 天堂资源在线亚洲| 欧美激情视频一区二区三区在线播放| 免费不卡中文字幕在线| 欧美交a欧美精品喷水| 免费欧美在线视频| 欧美日一区二区| 久久伊人亚洲| 日韩福利视频网| 99亚洲精品| 欧美成人aaa| 91成人在线| 综合在线一区| 先锋亚洲精品| 欧美日韩国产亚洲一区| 麻豆视频在线观看免费网站黄| 日韩高清电影一区| 亚洲免费网址| 久久免费大视频| 欧美不卡高清一区二区三区| 久久a爱视频| 日本欧美一区| 久久国内精品| 久久激情av| 国产精品porn| 亚洲精一区二区三区| 亚洲我射av| 国产婷婷精品| 蜜桃av一区二区三区电影| 午夜欧美精品久久久久久久| 久久国产免费| 亚洲一区久久| 日韩三级精品| 日韩精品免费视频人成| 国产日韩欧美三级| 国产福利资源一区| 国产成人精品999在线观看| 超碰在线99| 国内激情久久| 一区二区高清| 日韩影院精彩在线| 91福利精品在线观看| 精品国产午夜肉伦伦影院| 日韩毛片视频| 免费中文字幕日韩欧美| 亚洲久草在线| 国产一区二区三区日韩精品| 久久精品国产成人一区二区三区| 成人在线超碰| 亚洲精品网址| 日本aⅴ精品一区二区三区| 国产精品手机在线播放| 国产理论在线| 乱人伦精品视频在线观看| 日韩精品免费一区二区夜夜嗨 | 91精品电影| 综合激情一区| 精品国产美女a久久9999| 激情综合激情| 国产极品嫩模在线观看91精品| 精精国产xxxx视频在线野外| 美国三级日本三级久久99| 免费在线成人| 亚洲精品精选| 欧美综合另类| 色综合视频一区二区三区日韩| 欧美国产另类| 视频一区视频二区中文| 国产不卡人人| 欧美成人一二区| 亚洲毛片视频| 亚洲调教视频在线观看| 国产精品手机在线播放| 四虎成人精品一区二区免费网站| 欧洲一区二区三区精品| 国产精品久久久久久av公交车| 美女久久久久| 欧美日本久久| 三级在线观看一区二区| 国产v日韩v欧美v| 日韩毛片一区| 久久精品免费一区二区三区 | 日韩综合一区二区三区| 成人自拍av| 精品国产乱码| 国产亚洲观看| 日本一区福利在线| 亚洲视频二区| 蜜桃视频在线观看一区| 99视频精品全部免费在线视频| 美女亚洲一区| 午夜久久美女|