使用使用者自定義型別 CLR UDT

2022-01-15 01:53:24 字數 2782 閱讀 2747

一些復合型別進行正規化分解是沒有必要的,尤其是一些統一模型的情況下

setnocount on

declare

@i timebalance

set@i = cast('d/2015-1-1/7' as timebalance)

select

@iselect

@i.tostring()

select

@i.totimestring()

select

@i.distance() as distance;

with

a as ( select '100' s ,

'' m

union

allselect '281474976710693' s ,

'37次' m

union

allselect 'y/2015-1-5/1' s ,

'包年' m

union

allselect 'm/2015-1-5/11' s ,

'包個月' m

union

allselect 'd/2015-1-1/7' s ,

'包天' m

union

allselect '1500438729850887' s ,

'包天' m

union

allselect 'h/2015-1-5 8:30/10' s ,

'包小時' m

clr 整合的效能

操作 udt 資料

using system;

using system.data;

using system.data.sqlclient;

using system.data.sqltypes;

using microsoft.sqlserver.server;

///

/// 時間錢包餘額型別

///

///

///

/// 基於長整型,結構如下:

/// 包時型別2b,起始時間utc秒數4b,時間總長2b(單位同型別決定)

/// 包時型別:0不包時1秒2分3時4日5月6年

///

///

[serializable]

[microsoft.sqlserver.server.sqluserdefinedtype(format.native)]

public

struct timebalance : inullable

//", (timeenum)type, utcsecondtodatetime(startsecond).tostring("yyyy-mm-dd hh:mm:ss"), value);}}

public

string tohex()

public

string totimestring()

return

string.format("//", (timeenum)type, utcsecondtodatetime(startsecond).tostring(format), endtime().tostring(format));}}

public

long tovalue()

}public

static timebalance parse(sqlstring s)

else

}return u;

}catch (exception ex)

}public

bool isnull

}public

static timebalance null

}public

long distance()

public datetime endtime()

}#region 獲取utc

public

static

int datetimetoutcsecond(datetime datetime)

static datetime utcsecondtodatetime(int second)

#endregion

// 這是佔位符成員字段

public

int startsecond;

public

short type;

public

long

value;

static

readonly datetime utc = timezoneinfo.converttimetoutc(new datetime(1970, 1, 1), timezoneinfo.utc);

// 私有成員

private

bool _null;

}public

enum timeenum

C C 程式設計 使用者自定義型別

include struct vector 表示通過非const引用的方式傳遞v,這樣vector init就可以修改v指向的變數了 void vector init vector v,int s void f vector v,vector rv,vector pv using namespace...

C語言 自定義函式使用用例

輸入9,輸出9 9口訣表,輸出12,輸出12 12的乘法口訣表。include 實現函式init 初始化陣列 實現empty 清空陣列 實現reverse 函式完成陣列元素的逆置。要求 自己設計函式的引數,返回值。include include int init int arr return0 in...

帝國CMS使用使用者自定義函式取發表的新聞數

新增使用者自定義函式 1.函式內容如下 複製 如下 php function user newstotal userid ecms news where userid userid.num empirewww.cppcns.com gettotal query echo num 2.將函式內容複製到...