MSSQL网站制作之统计不流动栏目标人为年报的存储历程
对于update操作,event中依次记录旧行,新行的值。存储历程|统计本存储历程乐成完成行列转换统计
人为数据是竖表,即一个员工的人为对应多条人为栏目标纪录
createorreplaceprocedureprc_rs_gzndbb(p_tableinvarchar2)is
/*===================================================================================================
称号:prc_rs_gzndbb(procedure)
参数:传进:p_tablevarchar2
挪用:PRC_YD_SHTZTJYH前往:
功效:统计员工人为发放年度报表
前往:把统计了局拔出p_table表中
编写工夫:2005-2-21
修正人:
修正内容:
修正工夫:
=====================================================================================================*/
v_lmmcvarchar2(20);--栏目称号
v_sqlvarchar2(1000);
--界说取人为栏目标游标
cursorcur_lmmcis
selectdistinctlmmc
FROMtmp_gztjlsb;
begin
--界说静态SQL
v_sql:=selectrydm,xm;
--遍历人为栏目并拼写成拔出的SQL
forcur_lmmc_recincur_lmmcloop
v_lmmc:=cur_lmmc_rec.lmmc;
v_sql:=v_sql||,||sum(decode(lmmc||,||v_lmmc||,je))||||v_lmmc;
endloop;
v_sql:=v_sql||fromtmp_gztjlsbgroupbyrydm,xm;
executeimmediateinsertinto||p_table||||v_sql;
commit;
endprc_rs_gzndbb;
这类操作的执行过程是,1)按照新的表定义建立一个临时表tmpa,2)将原表数据拷贝到临时表,3)将原始表改名tmpb,4)将tmpa改名为原表名,5)将tmpb删除。 其实可以做一下类比,Oracle等数据库产品老早就支持了java编程,而且提供了java池参数作为用户配置接口。但是现在有哪些系统大批使用了java存储过程?!连Oracle自己的应用都不用为什么?! 分区表效率问题肯定是大家关心的问题。在我的试验中,如果按照分区字段进行的查询(过滤)效率会高于未分区表的相同语句。但是如果按照非分区字段进行查询,效率会低于未分区表的相同语句。 索引视图2k就有。但是2005对其效率作了一些改进但是schema.viewname的作用域真是太限制了它的应用面。还有一大堆的环境参数和种种限制都让人对它有点却步。 习惯敲命令行的朋友可能会爽一些。但是功能有限。适合机器跑不动SQLServerManagementStudio的朋友使用。 having子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件显示特定的组,也可以使用多个分组标准进行分组。 学习SQL语言的话如果要学会去做网站就不是很难!但是要做数据库管理的话就有难度了! 需要注意的一点,也是我使用过程中发现的一个问题。在建立function->schema->table后,如果在现有的分区表上建立没有显式声明的聚集索引时,分区表会自动变为非分区表。这一点很让我纳闷。 如果是将来做数据库的开发设计,就应该详细学习T-SQL的各种细节,包括T-SQL的程序设计、存储过程、触发器以及具体使用某个开发语言来访问数据库。
页:
[1]