报表SQL存储过程开发中十条军规

标签: sql 存储过程 开发 | 发表时间:2015-01-12 15:11 | 作者:renzp27
出处:http://www.iteye.com


报表SQL存储过程的特点:

通过一组变量作为输入参数,根据行控制变量的不同,循环查询,将每个查询的结果值保存到变量里面,够一组了,插入临时表(结果表),如此反复,直到循环结束。最终查询临时表,返回一个结果集的游标。

报表SQL存储过程十条军规:

1、存储过程中要尽可能少的定义变量,能复用就复用。

2、存储过程中两个列相互赋值、或者是变量给临时表中插入值的时候要注意两个数据类型定义要完全一致。

3、存储过程中临时表中的列名最好不要和存储过程中的变量名重名,否则,出现问题很难调试发现。

4、存储过程要注意循环条件的控制、对没有分组的规律的要创造出一些规律。对于多层循环要注意循环开关控制。

5、结果集最好用临时表保存,在插入结果集到临时表的时候,不要commit。否则临时表会清空甚至被drop掉。

6、存储过程语句一般来说越少越好,循环体中的SQL要反复优化,以减少表的扫描次数为终极目标,这样一般能获取更好的性能。

7、在用sum的时候,一定要注意对null值进行处理。比如为null的时候给一个默认值0。

8、在插入字符串数据的时候,一定要注意:空格、空串、null的区别,在适当的时候选择适当的值插入。

9、机器编号应该根据程序循环自动生成,对于多层嵌套循环的存储过程,内外层之间的逻辑关系要注意。比如内层循环的所得记录只求和为外层循环记录,所有外层循环的记录求和为合计行值。那么在处理的时候要通过变量记录每次外层循环的一些参数,以便求和方便。

10、尽可能少的减少嵌套循环的次数,将循环次数多的细的放到最内层。游标用完后要关闭。



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [sql 存储过程 开发] 推荐:

报表SQL存储过程开发中十条军规

- - SQL - 编程语言 - ITeye博客
报表SQL存储过程的特点:. 通过一组变量作为输入参数,根据行控制变量的不同,循环查询,将每个查询的结果值保存到变量里面,够一组了,插入临时表(结果表),如此反复,直到循环结束. 最终查询临时表,返回一个结果集的游标. 报表SQL存储过程十条军规:. 1、存储过程中要尽可能少的定义变量,能复用就复用.

SQL 存储过程之游标

- - CSDN博客推荐文章
使用游标循环 SQL 查询结果: . --- 声明变量 DECLARE @bid nvarchar(30); DECLARE @address nvarchar(50); --- 定义游标 DECLARE cur CURSOR for. select bid,[Address] from building; --- 打开游标 OPEN cur.

SQL Server 存储过程小结

- - CSDN博客数据库推荐文章
Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用. 当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.     存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行.

ORACLE 包内的存储过程的动态sql

- - CSDN博客数据库推荐文章
  function hello_function(p_param3 varchar2) --参数与包头中必须保持一致.         execute immediate 'insert into logtable1 values (:1,:2,:3,:4)' using '1','1','2','3'; --只能动态插入.

mysql存储过程 游标

- - ITeye博客
end if; insert into table3 (name) select name from table2 where id =i; end loop cursor_loop; CLOSE c1; end $ delimiter ;. 已有 0 人发表留言,猛击->> 这里<<-参与讨论.

oracle 存储过程 基础

- - ITeye博客
差不多一年没写过存储过程,最近要写,发现基本忘了,google一番之后,觉得很有必要把基础的东西写下来备忘. decalre -- 变量声明 var1 number(2);. -- 仅声明 var2 char(2) := '11';. -- 在声明的同时初始化 begin. -- 语句 end; -- 语句块结束.

oracle中的存储过程使用

- - CSDN博客推荐文章
一存储过程的基本应用  . 1 创建存储过程(SQL窗口). 存储过程适合做更新操作,特别是大量数据的更新. 2 查看存储过程在数据字典中的信息(SQL窗口). 3 查看存储过程语句(SQL窗口). 4 执行存储过程(Command窗口). 使用SQL接口更新数据库,如果更新复杂而频繁,则需要频繁得连接数据库.

mysql 存储过程的简单例子

- - 数据库 - ITeye博客
mysql 存储过程的简单例子. -- 定义新的语句分隔符// delimiter // create procedure pd016() begin. -- 本存储过程主要实现以下操作. -- 2.根据游戏表数据去获取类型表的信息. -- declare 必须紧跟着在begin之后定义. -- 如果用了游标cursor,则必须定义这个游标结束标志,用来判读游标是否到底.

开发者应该学习SQL的九个理由

- 飞羽飞之猪 - Solidot
Eric Tou 写道 "Jeremiah Peschka写了他认为开发者应该学习SQL的九个理由(中文):1.SQL是可移植的;2.SQL从不改变;3.SQL易于性能增益;4.SQL使你成为更好的开发者;5.增进团队间的交流;6.工作保障;7.SQL真的不那么难;8.理解什么时候不适合数据库;9.让故障排除更简单".

开发者应了解的一些SQL优化准则(转)

- - SQL - 编程语言 - ITeye博客
虽然本文不能覆盖所有的准则,但还是希望能给开发者带来些许帮助. 下面就来看看在编码实践中哪些应该做,哪些不应该做.  在长时间运行的查询和短查询中使用事务.   如果预期有一个长时间运行的查询,并且有大量的数据输出时,开发者就应该在BEGIN TRAN 和END TRAN之间使用事务.   这样事务会在缓冲区缓存为独立事务,并会被分配特定内存,以此来提高处理速度.