MSSQL网页编程之利用存储历程完成分页打印
提供TCP/IP、ODBC和JDBC等多种数据库连接路径。存储历程|打印|分页利用存储历程完成分页打印。
这个存储历程是一个小区宽带用户办理体系,项目里代码的一部分。
功效是:
完成把表userinfo里的用户材料按IP网段排序举行分页打印!!
好比172.20.128.XX的IP简称为128网段的用户,
172.20.119.XX的IP简称为119网段的用户,
每一个网段的用户打印在一张A4纸上,
不敷一张的按一张打印,其他的可空出。
年夜于一张小于两张的按二张打印,其他空出.
经由预算一页最多只能打印37行.
思绪是:先把select出的按IP分组的用户信息和盘算出的空格行insert进一个一时表中
然后多此一时表打印就好了。
--起首清空表
--truncatetablesubip
declare@resultint
declare@subipvarchar(20)
declarecur_escrollcursorfor
selectsubstring(ip_address,8,3)fromuserinfogroupbysubstring(ip_address,8,3)
opencur_e--翻开游标
--printaaa+convert(char(13),@@cursor_rows)
fetchfirstfromcur_einto@subip
while(@@fetch_status=0)
begin
--insertintosubip(supip)values(@subip)
insertintosubipselectuserinfo.username,userinfo.catalyst_port,userinfo.home_address,
userinfo.ip_address,userinfo.phone,catalyst.label,fromuserinfo,
catalystwhereuserinfo.catalyst_id=catalyst.idandsubstring(userinfo.ip_address,8,3)=@subip
set@result=@@rowcount
if(@result>37)
begin
while(@result<74)
begin
insertintosubipselect
username=,catalyst_port=,home_address=,ip_address=,phone=,label=,account=
set@result=@result+1
end
end
else
begin
while(@result<37)
begin
insertintosubipselect
username=,catalyst_port=,home_address=,ip_address=,phone=,label=,account=
set@result=@result+1
end
end
--select@@rowcount
fetchnextfromcur_einto@subip
end
closecur_e
deallocatecur_e
对于insert操作,只需要把event_type改成DELETE_ROWS_EVENT;对于delete操作,改成WRITE_ROWS_EVENT 你可以简单地认为适合的就是好,不适合就是不好。 语句级快照和事务级快照终于为SQLServer的并发性能带来了突破。个人感觉语句级快照大家应该应用。事务级快照,如果是高并发系统还要慎用。如果一个用户总是被提示修改不成功要求重试时,会杀人的! SQL语言是学习所有数据库产品的基础,无论你是做数据库管理还是做数据库开发都是这样。不过具体学习的侧重点要看你将来做哪一块,如果是做数据库管理(DBA),侧重点应该放在SQLServer的系统管理上. 你可以简单地认为适合的就是好,不适合就是不好。 记得在最开始使用2k的时候就要用到这个功能,可惜2k没有,现在有了作解决方案的朋友会很高兴吧。 以前的DTS轻盈简单。但是现在的SSIS虽然功能强大了很多,但是总是让人感觉太麻烦。看看论坛中询问SSIS的贴子就知道。做的功能太强大了,往往会有很多用户不会用了 SQLServer的异构移植功能个人感觉最好了。(如果对比过SQLServer的链接服务器和Oracle的透明网关的朋友会发现SQLServer的sp_addlinkedserver(openquery)异构数据库系列比Oracle真是强太多了。) 而SQLServer如果能像Oracle一样可以为登陆分配如:5%的cpu,10%的内存。就可以解决这个漏洞。
页:
[1]