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

首頁 > 開發 > 綜合 > 正文

使用用戶自定義類型 CLR UDT

2024-07-21 02:46:46
字體:
來源:轉載
供稿:網友
使用用戶自定義類型 CLR UDT

? ? ??

一些復合類型進行范式分解是沒有必要的,尤其是一些統一模型的情況下

? ? ?

  1. SET NOCOUNT ON
  2. DECLARE @i TimeBalance
  3. SET @i = CAST('D/2015-1-1/7' AS TimeBalance)
  4. SELECT @i
  5. SELECT @i.ToString()
  6. SELECT @i.ToTimeString()
  7. SELECT @i.Distance() AS Distance;
  8. ?
  9. WITH a AS ( SELECT '100' s ,
  10. ????????????????????????'' m
  11. ???????????????UNIONALL
  12. ???????????????SELECT '281474976710693' s ,
  13. ????????????????????????'37次' m
  14. ???????????????UNIONALL
  15. ???????????????SELECT 'Y/2015-1-5/1' s ,
  16. ????????????????????????'包年' m
  17. ???????????????UNIONALL
  18. ???????????????SELECT 'M/2015-1-5/11' s ,
  19. ????????????????????????'包個月' m
  20. ???????????????UNIONALL
  21. ???????????????SELECT 'D/2015-1-1/7' s ,
  22. ????????????????????????'包天' m
  23. ???????????????UNIONALL
  24. ???????????????SELECT '1500438729850887' s ,
  25. ????????????????????????'包天' m
  26. ???????????????UNIONALL
  27. ???????????????SELECT 'H/2015-1-5 8:30/10' s ,
  28. ????????????????????????'包小時' m
  29. ?????????????)
  30. ????SELECT m + '' + s ,
  31. ????????????t.ToString() string ,
  32. ????????????t.ToHex() hex ,
  33. ????????????t.ToTimeString() timeString ,
  34. ????????????t.ToValue() value ,
  35. ????????????t.Distance() distance
  36. ????FROM ( SELECT s ,
  37. ????????????????????????m ,
  38. ????????????????????????CAST (s AS TimeBalance) t
  39. ??????????????FROM A
  40. ????????????) tt

?

??

? ? ??

? ? ??

? ??

相關資料:

? ??

TSql vs. SQL CLR Performance Analysis

? ??

CLR 集成的性能

操作 UDT 數據

? ??

  1. ? ? ?using System;
  2. using System.Data;
  3. using System.Data.SqlClient;
  4. using System.Data.SqlTypes;
  5. using Microsoft.SqlServer.Server;
  6. ?
  7. /// <summary>
  8. /// 時間錢包余額類型
  9. ///
  10. /// </summary>
  11. /// <remarks>
  12. /// 基于長整型,結構如下:
  13. /// 包時類型2B,起始時間UTC秒數4B,時間總長2B(單位同類型決定)
  14. /// <p>包時類型:0不包時1秒2分3時4日5月6年</p>
  15. /// </remarks>
  16. /// <see cref="https://msdn.microsoft.com/en-us/library/ms131086.aspx"/>
  17. [Serializable]
  18. [Microsoft.SqlServer.Server.SqlUserDefinedType(Format.Native)]
  19. publicstruct TimeBalance : INullable
  20. {
  21. ????publicoverridestring ToString()
  22. ????{
  23. ????????switch (type)
  24. ????????{
  25. ????????????case 0:
  26. ????????????case 1:
  27. ????????????????return ToValue().ToString();
  28. ????????????default:
  29. ????????????????returnstring.Format("{0}/{1}/{2}", (TimeEnum)type, UTCSecondToDateTime(startSecond).ToString("yyyy-MM-dd HH:mm:ss"), value);
  30. ????????}
  31. ?
  32. ?
  33. ????}
  34. ????publicstring ToHex()
  35. ????{
  36. ????????return type.ToString("X4") +"" + startSecond.ToString("X8") + value.ToString("X4");
  37. ????}
  38. ????publicstring ToTimeString()
  39. ????{
  40. ?
  41. ????????switch (type)
  42. ????????{
  43. ????????????case 0:
  44. ????????????case 1:
  45. ????????????????return ToValue().ToString();
  46. ????????????default:
  47. ????????????????TimeEnum typeEnum = (TimeEnum)type;
  48. ????????????????string format = "";
  49. ????????????????switch (typeEnum)
  50. ????????????????{
  51. ????????????????????case TimeEnum.S:
  52. ????????????????????default:
  53. ????????????????????????format = "HH:mm:ss";
  54. ????????????????????????break;
  55. ????????????????????case TimeEnum.Mi:
  56. ????????????????????????format = "dd HH:mm";
  57. ????????????????????????break;
  58. ????????????????????case TimeEnum.H:
  59. ????????????????????????format = "MM-dd HH";
  60. ????????????????????????break;
  61. ????????????????????case TimeEnum.D:
  62. ????????????????????????format = "yyyy-MM-dd";
  63. ????????????????????????break;
  64. ????????????????????case TimeEnum.M:
  65. ????????????????????????format = "yyyy-MM";
  66. ????????????????????????break;
  67. ????????????????????case TimeEnum.Y:
  68. ????????????????????????format = "yyyy";
  69. ????????????????????????break;
  70. ?
  71. ?
  72. ????????????????}
  73. ????????????????returnstring.Format("{0}/{1}/{2}", (TimeEnum)type, UTCSecondToDateTime(startSecond).ToString(format), EndTime().ToString(format));
  74. ?
  75. ????????}
  76. ????}
  77. ?
  78. ????publiclong ToValue()
  79. ????{
  80. ????????switch (type)
  81. ????????{
  82. ????????????case 0:
  83. ????????????case 1:
  84. ????????????????returnvalue;
  85. ?
  86. ????????????default:
  87. ????????????????return ((long)type << 48) + ((long)startSecond << 16) + value;
  88. ????????}
  89. ????}
  90. ?
  91. ????publicstatic TimeBalance Parse(SqlString s)
  92. ????{
  93. ????????if (s.IsNull)
  94. ????????????return Null;
  95. ????????try
  96. ????????{
  97. ????????????TimeBalance u = new TimeBalance();
  98. ?
  99. ????????????if (s.Value.Contains("/"))
  100. ????????????{
  101. ????????????????u.type = (short)(TimeEnum)Enum.Parse(typeof(TimeEnum), (s.Value.Split('/')[0]));
  102. ????????????????u.startSecond = DateTimeToUTCSecond(DateTime.Parse(s.Value.Split('/')[1]));
  103. ????????????????u.value = long.Parse(s.Value.Split('/')[2]);
  104. ????????????}
  105. ????????????else
  106. ????????????{
  107. ?
  108. ????????????????byte[] bs = BitConverter.GetBytes(long.Parse(s.Value));
  109. ????????????????u.type = BitConverter.ToInt16(bs, 6);
  110. ????????????????switch (u.type)
  111. ????????????????{
  112. ????????????????????case 0:
  113. ????????????????????????u.value = long.Parse(s.Value);
  114. ????????????????????????break;
  115. ????????????????????case 1:
  116. ????????????????????????u.value = BitConverter.ToInt16(bs, 0);
  117. ????????????????????????break;
  118. ????????????????????default:
  119. ?
  120. ????????????????????????u.startSecond = BitConverter.ToInt32(bs, 2);
  121. ????????????????????????u.value = BitConverter.ToInt16(bs, 0);
  122. ????????????????????????break;
  123. ????????????????}
  124. ????????????}
  125. ?
  126. ????????????return u;
  127. ????????}
  128. ????????catch (Exception ex)
  129. ????????{
  130. ????????????thrownew Exception(s.Value + "/r/n" + ex.ToString());
  131. ????????}
  132. ????}
  133. ?
  134. ?
  135. ?
  136. ?
  137. ????publicbool IsNull
  138. ????{
  139. ????????get
  140. ????????{
  141. ????????????// 在此處放置代碼
  142. ????????????return _null;
  143. ????????}
  144. ????}
  145. ?
  146. ????publicstatic TimeBalance Null
  147. ????{
  148. ????????get
  149. ????????{
  150. ????????????TimeBalance h = new TimeBalance();
  151. ????????????h._null = true;
  152. ????????????return h;
  153. ????????}
  154. ????}
  155. ?
  156. ?
  157. ????publiclong Distance()
  158. ????{
  159. ????????returnvalue;
  160. ?
  161. ????}
  162. ?
  163. ????public DateTime EndTime()
  164. ????{
  165. ????????short v = (short)(value & 0xffff);
  166. ????????TimeEnum typeEnum = (TimeEnum)type;
  167. ????????switch (typeEnum)
  168. ????????{
  169. ????????????// case TimeEnum.N:
  170. ?
  171. ????????????case TimeEnum.S:
  172. ????????????default:
  173. ????????????????return UTCSecondToDateTime(startSecond).AddSeconds(v);
  174. ????????????case TimeEnum.Mi:
  175. ????????????????return UTCSecondToDateTime(startSecond).AddMinutes(v);
  176. ????????????case TimeEnum.H:
  177. ????????????????return UTCSecondToDateTime(startSecond).AddHours(v);
  178. ????????????case TimeEnum.D:
  179. ????????????????return UTCSecondToDateTime(startSecond).AddDays(v);
  180. ????????????case TimeEnum.M:
  181. ????????????????return UTCSecondToDateTime(startSecond).AddMonths(v);
  182. ??????
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
美女精品久久久| 亚洲第一区第二区| 久久久国产精品x99av| 日韩在线观看免费av| 18一19gay欧美视频网站| 欧美精品www| 在线电影av不卡网址| 久久韩国免费视频| 国产精品白嫩美女在线观看| 欧美激情影音先锋| 国产综合视频在线观看| 亚洲欧美国产另类| 久久成人av网站| 97视频在线观看视频免费视频| 国产精品777| 国产精品高清在线观看| 国产成人aa精品一区在线播放| 91久久久久久| 精品国产91乱高清在线观看| 欧美性高潮床叫视频| 国产一区二区三区高清在线观看| 不卡av电影在线观看| 亚洲色图色老头| 欧美日韩精品在线| 欧美韩国理论所午夜片917电影| 精品国产欧美一区二区五十路| 免费99精品国产自在在线| 亚洲性av网站| 欧美在线亚洲一区| 国精产品一区一区三区有限在线| 日本成人在线视频网址| 91免费欧美精品| 日韩视频免费中文字幕| 国产91九色视频| 热久久视久久精品18亚洲精品| 国产精品免费视频xxxx| 亚洲男人的天堂在线| 欧美激情一二区| 国产精品亚洲激情| 九九精品视频在线观看| 亚洲国产女人aaa毛片在线| 国产视频一区在线| 亚洲成**性毛茸茸| 久久人人爽人人| 亚洲黄页视频免费观看| 日本不卡视频在线播放| 国产美女91呻吟求| 国产午夜精品美女视频明星a级| 在线亚洲午夜片av大片| 亚洲图片欧美日产| 欧美性xxxx极品高清hd直播| 国产日韩欧美中文在线播放| 国产97在线|日韩| 精品视频偷偷看在线观看| 国产精品欧美日韩| 国产日韩专区在线| 国产精品白嫩初高中害羞小美女| 欧美日韩裸体免费视频| 国产免费一区视频观看免费| 欧美一级大片在线免费观看| 美女精品视频一区| 日韩成人小视频| 亚洲欧美国产一区二区三区| 久久91超碰青草是什么| 日韩毛片在线看| 国产精品久久一| 亚洲激情视频网| 国产一区在线播放| 欧美重口另类videos人妖| 日韩av在线免播放器| 亚洲人高潮女人毛茸茸| 亚洲一区二区三区在线视频| 97色在线视频观看| 精品国偷自产在线| 性色av一区二区三区红粉影视| y97精品国产97久久久久久| 日韩国产精品亚洲а∨天堂免| 亚洲福利视频久久| 欧美夫妻性视频| 亚洲成人激情在线观看| 亚洲第一页中文字幕| 琪琪亚洲精品午夜在线| 欧美大肥婆大肥bbbbb| 亚洲精品日韩激情在线电影| 91久久国产综合久久91精品网站| 日韩欧美有码在线| 成人激情视频在线播放| 亚洲欧美一区二区三区在线| 在线激情影院一区| 国产精品国产福利国产秒拍| 欧美xxxwww| 精品久久久久久久久中文字幕| 91久久国产综合久久91精品网站| 国产午夜精品全部视频播放| 国产精品三级在线| 国产欧美在线看| 久久人人爽人人爽人人片av高请| 伦伦影院午夜日韩欧美限制| 国产精品福利在线观看网址| 国产日韩欧美在线视频观看| 岛国视频午夜一区免费在线观看| 久久综合伊人77777蜜臀| 国产精品91在线观看| 97婷婷涩涩精品一区| 亚洲福利在线播放| 久色乳综合思思在线视频| 亚洲欧洲日本专区| 欧美日韩一区二区三区| 国产xxx69麻豆国语对白| 丝袜亚洲另类欧美重口| 黑人极品videos精品欧美裸| 国产精品高清免费在线观看| 欧亚精品在线观看| 欧美日韩一区二区精品| 国产精品久久av| 久久久久久91| 国产精品日本精品| 欧美日韩国产综合视频在线观看中文| 日本成人在线视频网址| 日本aⅴ大伊香蕉精品视频| 精品亚洲国产成av人片传媒| 性欧美亚洲xxxx乳在线观看| 欧美亚洲国产视频| 最近中文字幕mv在线一区二区三区四区| 亚洲在线免费观看| 亚洲成人av片| 精品小视频在线| 国产剧情久久久久久| 亚洲大胆人体视频| 亚洲欧洲偷拍精品| 欧美最近摘花xxxx摘花| 91黄色8090| 国产成人激情小视频| 亚洲国产小视频| 国产精品免费福利| 美日韩精品免费视频| 久久国产天堂福利天堂| 国产精品视频精品| 国产精品人人做人人爽| 久久综合五月天| 亚洲国产精品女人久久久| 欧美疯狂做受xxxx高潮| 欧美日本亚洲视频| 久久男人av资源网站| 亚洲自拍小视频免费观看| 成人免费视频97| 亚洲欧洲自拍偷拍| 久久这里只有精品99| 国产在线观看不卡| 亚洲综合在线中文字幕| 国产成人精品综合久久久| 福利微拍一区二区| 亚洲国产精品一区二区三区| yw.139尤物在线精品视频| 国产精品久久久久久久久影视| 欧美激情精品久久久久久变态| 国产精品2018| 成人福利视频网| 这里只有精品久久| 国产日韩欧美另类| 亚洲四色影视在线观看| 2020国产精品视频| 欧美性生活大片免费观看网址| 91精品国产乱码久久久久久蜜臀|