SQLServer:用戶自定義數據類型用法

今天給大家梳理一下SQLServer:用戶自定義數據類型用法,希望對大家能有所幫助!

1、基于基本數據類型創建的別名數據類型

-- 創建生日的數據類型
CREATE TYPE birthday
FROM datetime NULL;
-- 創建用戶表
CREATE TABLE userInfo
(id  varchar(32),  userName  nvarchar(30),birthday
birthday);
-- 插入測試數據
INSERT userInfo (id,userName,birthday)VALUES('123','小明','2005-01-02 12:30')-- 執行查詢
SELECT * FROM userInfo

2、CLR用戶定義數據類型

2.1 概念介紹

SQL CLR (SQL Common Language Runtime) 是自 SQL Server 2005 才出現的新功能,它將.NET Framework中的CLR服務注入到 SQL Server 中,讓 SQL Server 的部分數據庫對象可以使用 .NET Framework 的編程語言開發(只支持VB.NET和C#),包括預存程序、用戶自定義函數、觸發程序、用戶自定義類型以及用戶自定義匯總函數等功能。

說明:默認情況下,在 SQL Server 中關閉了執行 CLR 代碼的功能。?可以使用sp_configure系統存儲過程來啟用 CLR。

 
exec sp_configure 'clr enabled',1  --1,啟用clr\0,禁用clr

2.2 CLR開發步驟

1、在.NET中新建一個類,并在這個類里新建一個public方法。

2、編譯這個類為一個DLL。

3、在SQL Server中注冊這個DLL。

4、新建一個SQL Server函數來訪問指定的.NET方法。

2.3 簡單示例

1、在Visual Studio中新建一個名為“SQLServerCLRTest”的類庫項目。然后,新建一個名為“CLRFunctions”的類,并在其內添加一個名為“HelloWold”的方法,代碼如下:

public class CLRFunctions 
{ public static string HelloWorld(string Name) { return ("你好," + Name); } 
}

注意:為了滿足SQL Server可以調用它,必須定義為public和static的方法

2、編譯這個項目為一個DLL,并在SQL Server中注冊它。這也是比較簡單的,在Visual Studio中右鍵單擊項目,選擇“生成”后程序就會生成一個SQLServerCLRTest.DLL。然后將DLL拷貝到安裝SQLServer服務器的電腦上。

3、啟用SQL Server中的CLR

---開啟所有服務器配置選項 
EXEC sp_configure N'show advanced options', N'1'  
RECONFIGURE WITH OVERRIDE--開啟clr enabled 選項 
EXEC sp_configure N'clr enabled', N'1' 
RECONFIGURE WITH OVERRIDE  
--關閉所有服務器配置選項 EXEC sp_configure N'show advanced options', N'0'  
RECONFIGURE WITH OVERRIDE --如果存在權限問題,執行下面一段腳本 
alter database [master] set TRUSTWORTHY on EXEC sp_changedbowner 
'sa'

4、注冊DLL

在SQLServer查詢分析器執行如下命令:

CREATE ASSEMBLY asmHelloWorld FROM 'C:\SQLServerCLRTest.dll' 

或者在SQLServer中直接界面注冊

5、SQL Server中調用方法

CREATE FUNCTION dbo.CLRHelloWorld
(@name as nvarchar(200)
)
RETURNS nvarchar(200)
AS EXTERNAL NAME asmHelloWorld
.[SQLServerCLRTest.CLRFunctions].HelloWorld


6、查詢分析器中調用

SELECT dbo.CLRHelloWorld('小明')


3、用戶定義表數據類型

用戶定義表數據類型是從SQL Server 2008開始提供的一種新功能。下面的語句首先創建一個名為CustomerTableType的表數據類型,然后創建一個基于該類型的變量,并向其中插入數據和查詢數據。

--創建用戶自定義表類型
CREATE TYPE dbo.CustomerTable AS TABLE 
(
id int NOT NULL, 
name char(10) NULL, 
age int 
PRIMARY KEY (Id)
)
---使用用戶自定義表類型
DECLARE @t CustomerTable
INSERT INTO @t VALUES(1,'小明',30)
SELECT * FROM @t ;
--刪除用戶算定義表類型
SP_DROPTYPE CustomerTable

IT技術分享社區

個人博客網站:https://programmerblog.xyz

文章推薦程序員效率:畫流程圖常用的工具程序員效率:整理常用的在線筆記軟件遠程辦公:常用的遠程協助軟件,你都知道嗎?51單片機程序下載、ISP及串口基礎知識硬件:斷路器、接觸器、繼電器基礎知識

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/270911.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/270911.shtml
英文地址,請注明出處:http://en.pswp.cn/news/270911.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python fsolve說明_Python fsolve()抱怨形狀.為什么?

具有函數f(x,y,z),我需要解決限制f(x,y,z) 0然后繪制它.我試圖為每對(y,z)找到f(x,y,z) 0的值x:from numpy import *from scipy.optimize import fsolvedef func(x,y,z):return xyzy linspace(0,1,100)z linspace(0,1,100)x0 zeros((y.size,z.size)) 0.5 # the …

C語言實現與功能的程序,用C語言實現Ping程序功能

2001 年 10 月 01 日大部分人用ping命令只是作為查看另一個系統的網絡連接是否正常的一種簡單方法。在這篇文章中,作者將介紹如何用C語言編寫一個模擬ping命令功能的程序。ping命令是用來查看網絡上另一個主機系統的網絡連接是否正常的一個工具。ping命令的工作原理…

數據庫知識:SQLServer變量相關知識介紹

今天給大家分享SQLServer變量相關介紹,希望對大家能有所幫助!1、概述SQLServer變量對應內存中的一個存儲空間。它和常量不同,變量的值可以在執行過程中改變。2、分類SQLServer變量根據作用范圍不同主要分為局部變量和全局變量。2.1.局部變量局…

oauth基本流程和原理

組裝loginurl-》去第三方登錄驗證-》回調callbackurlcode(票據)-》本地根據codeappidappkey組裝url隱式curl獲取用戶信息-》完成登錄。 之所以要用callbackurl的形式是因為不能讓用戶在你本地輸入賬號密碼防止被盜號。 之所以不在callbackurl的時候&…

halcon輪廓擦除_halcon第十二講,毛刺去除

在視覺測量中我們很會被毛刺問題困擾,產生干擾的因素很多,有打光問題和產品本生帶毛刺,接下來給兄弟們帶來兩種去毛刺的方法。第一種read_image (Image1323153Ba0b96cf52f88f1, 1)rgb1_to_gray (Image1323153Ba0b96cf52f88f1, GrayImage)lapl…

c語言雙循環計算n的階乘,用C語言用循環實現N的階乘

匿名用戶1級2014-03-04 回答不要用數組,用vector來實現相應的功能,我給你寫個大概的框架,你向里面添加就好了1234567891011121314151617181920212223242526272829303132333435363738394041424344454647#include #include #include …

存儲知識:U盤的實際容量要比標注容量小,你知道原因嗎?

用過U盤的朋友一定都會知道,U盤的實際容量往往是達不到它標注的容量。比如一個16G的U盤,其實際容量一般只有14.7G左右。今天本文會給大家解釋其中的原因。 原因一:計算容量方法不同 存儲設備制造商為了計算方便,采用十進制計算方法…

CentOS 7 防止端口自動關閉

tl;dr firewall-cmd --permanent --zonepublic --add-port2888/tcp firewall-cmd --reload #重新載入服務 永久配置firewalld開啟端口。 之前的一些坑 之前的一篇文章CentOS 7部署Node.jsMongoDB:在VPS上從安裝到Hello world中,講到了CentOS開啟端口用這…

jio文件 久其_功能強大的Windows文件管理器工具

Windows文件管理功能體驗只能說中規中矩,批量處理文件時非常的慢,而且在模糊搜索文件時的速度以及資源占用實在是感人,再加上功能較少,只能實現重命名、復制、粘貼、剪切這些基礎功能,因此想要提高文件之間處理效果通常…

C語言補丁原理,C語言可變長參數實現原理

(1) C語言可變參數我們能夠從C語言的printf得出可變參數的作用。printf函數的原型例如以下:int printf ( const char * format, ... );通過使用可變個數參數,就是傳入的參數個數是可變的,如printf須要依據format實參傳入多個實參。(2) …

辦公技巧:各類特殊符號輸入快捷鍵,瞬間提高你的辦公效率

??作者主頁:IT技術分享社區 ??作者簡介:大家好,我是IT技術分享社區的博主,從事C#、Java開發九年,對數據庫、C#、Java、前端、運維、電腦技巧等經驗豐富。 ??個人榮譽: 數據庫領域優質創作者🏆&#x…

前端構建工具的用法—grunt、gulp、browserify、webpack

隨著前端項目的飛速發展,項目越來越大、文件越來越多,前端工程化的工具也越來越多。下面介紹目前最流行的四種構建工具——grunt、gulp、browserify、webpack 所有的構建工具都是基于NodeJs和Npm,所以使用下面任何工具都需要安裝Node 一、gru…

adb命令刷機vivox20_vivo手機變磚 刷機手機端口連上顯示adb

展開全部vivo的刷機解賬戶鎖方法如下 有了這個方法 以后不管手機出現啥毛病 只要是軟件系統引32313133353236313431303231363533e4b893e5b19e31333365643535起的故障 都能一招搞定提示:刷機有風險 刷機需謹慎 對于刷機造成的一切后果均與本處無關 而避免風險的最好…

SQLServer常用的聚合函數筆記

今天給大家分享一下SQLServer常用的聚合函數,希望對初學者有所幫助!1、COUNT合計函數:返回查詢記錄(行)數。格式:COUNT([ALL|DISTINCT] [表達式|*])參數說明:ALL:默認值,指對查詢所有…

android studio 工程demo例子,Android Studio 實現跑馬燈微項目實例

**閑來無事,自己做了很多小的Demo,現在分享一個小的跑馬燈項目實例,有機會把2048小游戲的Demo也發了。不過那個的算法稍微有點兒復雜,需要整理。首先在創建一個MarqueeTextViewDemo項目在res-layout-activity_main.xml中編寫出相應…

SQLServer常用的配置函數筆記

今天給大家分享一下SQLServer常用的配置函數知識,希望對初學者能有所幫助!1、DATEFIRST Datefirst返回值tinyint說明:datefirst指一周中的第一天,英語中第一天為星期日示例:SELECT DATEFIRST AS 1st Day, DATEPART(dw, GETDATE())…

localdatetime 默認時間_datetime-local設置初始值

//全局變量var format "";//構造符合datetime-local格式的當前日期function getFormat(){format "";var nTime new Date();format nTime.getFullYear()"-";format (nTime.getMonth()1)<10?"0"(nTime.getMonth()1):(nTime.get…