易截截图软件、单文件、免安装、纯绿色、仅160KB

SQL Server CLR全功略之五

一、这是这个系列的最后一节了,自定义复杂数据类型目前只能通过CLR来实现。为了在 SQL Server 中运行,您的 UDT 必须实现 UDT 定义中的以下要求:
1.该 UDT 必须指定 Microsoft.SqlServer.Server.SqlUserDefinedTypeAttribute。System.SerializableAttribute 可选用,但建议使用。
2.UDT 必须通过创建公共的 static(Microsoft Visual Basic 中为 Shared)Null 方法,在类或结构中实现 System.Data.SqlTypes.INullable 接口。默认情况下,SQL Server 是可识别 Null 的。这是为使在 UDT 中执行的代码能够识别 Null 值所必需的。
3.UDT 必须包含支持从其进行分析的公共 static (或 Shared)Parse 方法以及用于转换到对象的字符串表示形式的 ToString 方法。
4.具有用户定义序列化格式的 UDT 必须实现 System.Data.IBinarySerialize 接口并提供 Read 和 Write 方法。
5.该 UDT 必须实现 System.Xml.Serialization.IXmlSerializable,或者所有公共字段和属性必须均属于 XML 可序列化类型或者使用 XmlIgnore 属性进行修饰(如果要求替代标准序列化)。
6.一个 UDT 对象必须只存在一个序列化。如果序列化或反序列化例程识别了某一特定对象的多个表示形式,则验证将失败。
7.为了确保服务器将字节顺序的比较用于 UDT 值,SqlUserDefinedTypeAttribute.IsByteOrdered 必须为 true。
8.在类中定义的 UDT 必须具有不采用任何参数的公共构造函数。您可以选择创建其他重载类构造函数。
9.该 UDT 必须将数据元素作为公共字段或属性过程公开。
10.公共名称不能长于 128 个字符,并且必须符合在标识符中定义的针对标识符的 SQL Server 命名规则。
11.sql_variant 列不能包含 UDT 的实例。
12.继承的成员无法从 Transact-SQL 访问,因为 SQL Server 类型系统不知道 UDT 中的继承层次结构。但是,您可以在创建类的结构时使用继承,并且可以在该类型的托管代码实现方式中调用此类方法。
13.成员不能被重载,但类构造函数除外。如果您创建某一重载方法,则在 SQL Server 中注册程序集或创建类型时将不会引发错误。在运行时将检测到重载的方法,而不是在创建类型时检测到。只要永不调用重载的方法,重载的方法就可以存在于类中。一旦您调用重载的方法,就会引发错误。
14.任何 static(或 Shared)成员都必须声明为常量或声明为只读。静态成员将无法改变。
15.从 SQL Server 2008 开始,如果 SqlUserDefinedTypeAttribute.MaxByteSize 字段


相关文档:

Oracle SQL语句

ORDER BY 排序
 
ASC 升序(默认)
 DESC 降序
 
select * from s_emp order by dept_id , salary desc
部门号升序,工资降序
关键字distinct也会触发排序操作。
 
select * from employee order by 1; //按第一字段排序
NULL被认为无穷大。order by 可以跟别名。
 
select table_name ......

Oracle:pl/sql 异常处理[转]


pl/sql 提供了强大而灵活的手段来捕捉和处理程序产生的异常,从而使 oracle 的用户远离一些令人烦恼的 bug 。
 
pl/sql 异常处理的概念和术语
 
在 oracle 中所有的错误都被认为是不应该发生的异常。一个异常可能是以下 3 种情况的一种:
u       由系统产生的错误(& ......

SQL Server 2000的JDBC连接问题解决方法

 经过好几天的奋战,JDBC终于成功连接了SQL Server 2000,期间走了不少弯路,在这里分享我的一点经验
一、我的环境
   Windows XP+JDK6u15+Microsoft SQL Server 2000(SP4)+JCreator
   我先在网上下载数据库驱动程序,目录下有三个包msbase.jar mssqlserver.jar msutil.jar
   1 ......

使用Oracle的DBMS_SQL包执行动态SQL语句

 在某些场合下,存储过程或触发器里的SQL语句需要动态生成。Oracle的DBMS_SQL包可以用来执行动态SQL语句。本文通过一个简单的例子来展示如何利用DBMS_SQL包执行动态SQL语句:
DECLARE
       v_cursor NUMBER;
       v_stat NUMBER;
  & ......

用sql写小计和合计

select case when b.name is null and c.name is null then '合计' when b.name is null and c.name is not null then '小计' else b.name end as mtrname,
sum(a.number),c.name as cname from x_sell a join x_material b on a.mtr=b.fid join p_organi c on c.fid=a.customer
where a.stime>'2009-10-01'
GROUP B ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号