MSSQL教程之用自函F功能-------根付ū砻...
线上或者测试环境经常出现的误操作总是让DBA同学那么闹心。函倒δ埽焊砻玫奖淼牧忻皖型
我在sql程序r,几都玫揭恍┫到y冉ǖ暮,如right(),datalength()等,可是,我在工程_lr,假如但愿能F一些切合特别的请求的淼脑,就必要自已函,以下面的例子是一失掉表的Y的函
函档姆诸:
1.量函担捍祟函惦bЩ我坏
2.骰暮担骰匾Table型e的,分橐韵深:
2.1行担汉档热菔且SelectZ句
2.2多⑹龊:函档热菔怯啥SelectZ句M成
本例是用一多⑹龊,它的格局:
createfunctionfunction_name
([@parameter_name]:魅)
returns@return_variabletable(前往表的有P信息)
as
begin
function_body
return
end
例代a:
createfunctiontablestructure
(@objnamenvarchar(111))----此橐樵的表的名Q
----------------------------------------------
--fieldname楸淼牧械拿Q,type是列的型,length榱械拈L度,null暗示是不是允S榭
returns@tabletable(fieldnamevarchar(50),
typevarchar(16),
lengthint,
nullablevarchar(3))
----------------------------------------------
begin
declare@objidint
---1.先表sysobjects中失掉c魅氲谋砻(name)相婚配的ο笞Rea(id)
--sysobjects是包括在中创建的每ο(l件s束、AO值、n、t、存^程等等)的一有
select@objid=idfromsysobjectswhereid=object_id(@objname)
--syscolumns是包括每Y料表及D中的每Y料行的一
---2.再表syscolumns中获得c目吮碜Rea(id)符合、且不是程序目标的
(列名、型、L度、列是不是允S榭)的
insert@table
select
fieldname=name,
type=type_name(xusertype),
length=convert(int,length),
nullable=casewhenisnullable=0thennoelseyesend
fromsyscolumnswhereid=@objidandnumber=0orderbycolid
return
end
liaodaibo
我们只需要把binlog文件反向执行,每个操作都执行逆操作即可。当然也不是所有的event都反转。Table_mapevent必须还是在Rows_log_event每个操作之前。 如果我们从集合论(关系代数)的角度来看,一张数据库的表就是一组数据元的关系,而每个SQL语句会改变一种或数种关系,从而产生出新的数据元的关系(即产生新的表)。 在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。 如安全管理、备份恢复、性能监控和调优等,SQL只要熟悉基本操作就可以,只要程序设计部分只要稍加了解即可(如存储过程、触发器等)。 SP4包括用于以下SQLServer2000组件的程序包:Database组件(下载文件:SQL2000-KB884525-SP4-x86.EXE)更新SQLServer2000的32位Database组件,包括数据库引擎、复制、客户端连接组件及工具。有关其他信息,请参阅ReadmeSql2k32Sp4.htm。AnalysisServices组件(下载文件:SQL2000.AS-KB884525-SP4-x86.EXE)更新SQLServer2000的32位AnalysisServices。 微软对CLR作了大篇幅的宣传,这是因为数据库产品终于融入.net体系中。最开始我们也是狂喜,感觉对象数据库的一些概念可以实现了。 记得在最开始使用2k的时候就要用到这个功能,可惜2k没有,现在有了作解决方案的朋友会很高兴吧。 很多书籍啊,不过个人认为看书太慢,还不如自己学。多做实际的东西,就会遇到很多问题,网上搜下解决问题。不断重复这个过程,在配合sql的F1功能。 现在是在考虑:如果写到服务器端,我一下搞他个10个存储过程导过去,那久之服务器不就成垃圾箱了吗?即便优化了我的中间层.
页:
[1]