仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 459|回复: 7
打印 上一主题 下一主题

[学习教程] MSSQL网页编程之天生交织表的复杂通用存储历程

[复制链接]
爱飞 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:30:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
有了rowbase的binlog后,我们来分析一下怎么实现闪回。平时的DML无非三种操作,增删改,先说三种操作的日志格式。存储历程
ifexists(select*fromdbo.sysobjectswhereid=object_id(N[dbo].[p_qry])andOBJECTPROPERTY(id,NIsProcedure)=1)dropprocedure[dbo].[p_qry]GO

/*--天生交织表的复杂通用存储历程依据指定的表名,纵横字段,统计字段,主动天生交织表并可依据必要天生纵横两个偏向的算计

注重,横向字段数量假如年夜于纵向字段数量,将主动互换纵横字段假如不要此功效,则往失落互换处置部分

--邹建204.06--*/

/*--挪用示例

execp_qrysyscolumns,id,colid,colid,1,1--*/

createprocp_qry@TableNamesysname,--表名@纵轴sysname,--交织表最左面的列@横轴sysname,--交织表最下面的列@表体内容sysname,--交织表的数数据字段@是不是加横向算计bit,--为1时在交织表横向最右侧加横向算计@是不是家纵向算计bit--为1时在交织表纵向最下边加纵向算计asdeclare@snvarchar(4000),@sqlvarchar(8000)

--判别横向字段是不是年夜于纵向字段数量,假如是,则互换纵横字段set@s=declare@asysnameif(selectcasewhencount(distinct[+@纵轴+])<count(distinct[+@横轴+])then1else0endfrom[+@TableName+])=1select@a=@纵轴,@纵轴=@横轴,@横轴=@aexecsp_executesql@s,N@纵轴sysnameout,@横轴sysnameout,@纵轴out,@横轴out

--天生交织表处置语句set@s=set@s=select@s=@s+,[+cast([+@横轴+]asvarchar)+]=sum(case[+@横轴+]when+cast([+@横轴+]asvarchar)+then[+@表体内容+]else0end)from[+@TableName+]groupby[+@横轴+]execsp_executesql@s,N@svarchar(8000)out,@sqlout

--是不是天生算计字段的处置declare@sum1varchar(200),@sum2varchar(200),@sum3varchar(200)select@sum1=case@是不是加横向算计when1then,[算计]=sum([+@表体内容+])elseend,@sum2=case@是不是家纵向算计when1then[+@纵轴+]=casegrouping([+@纵轴+])when1then算计elsecast([+@纵轴+]asvarchar)endelse[+@纵轴+]end,@sum3=case@是不是家纵向算计when1thenwithrollupelseend

--天生交织表exec(select+@sum2+@sql+@sum1+from[+@TableName+]groupby[+@纵轴+]+@sum3)go


每个Rows_log_event中包含event_type,可选值为WRITE_ROWS_EVENT、UPDATE_ROWS_EVENT、DELETE_ROWS_EVENT。从宏名字就能看出用途。
山那边是海 该用户已被删除
沙发
发表于 2015-1-25 16:41:51 | 只看该作者
微软对CLR作了大篇幅的宣传,这是因为数据库产品终于融入.net体系中。最开始我们也是狂喜,感觉对象数据库的一些概念可以实现了。
莫相离 该用户已被删除
板凳
发表于 2015-2-3 11:01:11 | 只看该作者
而SQLServer如果能像Oracle一样可以为登陆分配如:5%的cpu,10%的内存。就可以解决这个漏洞。
只想知道 该用户已被删除
地板
发表于 2015-2-8 20:23:46 | 只看该作者
其实可以做一下类比,Oracle等数据库产品老早就支持了java编程,而且提供了java池参数作为用户配置接口。但是现在有哪些系统大批使用了java存储过程?!连Oracle自己的应用都不用为什么?!
透明 该用户已被删除
5#
发表于 2015-2-26 04:38:07 | 只看该作者
如果,某一版本可以提供强大的并发响应,但是没有Oracle的相应版本稳定,或者价格较贵,那么,它就是不适合的。
简单生活 该用户已被删除
6#
发表于 2015-3-8 12:03:35 | 只看该作者
我是新手,正在学习数据库和操作系统,深感理论的泛广,唯有一步一步来,但是又感觉时间不够,收集了很多资料却总是没能认真的看完,希望有一个讨论板块,大家共同解决,共同分享,共同努力
不帅 该用户已被删除
7#
发表于 2015-3-15 22:42:09 | 只看该作者
groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。
若天明 该用户已被删除
8#
发表于 2015-3-22 17:27:18 | 只看该作者
而SQLServer如果能像Oracle一样可以为登陆分配如:5%的cpu,10%的内存。就可以解决这个漏洞。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-6-8 02:55

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表