Chinaunix首页 | 论坛 | 博客
  • 博客访问: 587648
  • 博文数量: 772
  • 博客积分: 5000
  • 博客等级: 大校
  • 技术积分: 4980
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-17 13:02
文章分类

全部博文(772)

文章存档

2011年(1)

2008年(771)

我的朋友

分类:

2008-10-17 13:23:10


  我们一般所说的静态SQL语句,是指每次调用时,语句是固定的(语句中变量的取值可能会不同);而动态SQL语句,每次调用时,则根据调用者的需要来临时拼出,这样语句就是不固定的。但是我们可以把静态SQL语句写的复杂一点,以达到一点点的“动态”的功能。
  
  所谓静态SQL语句中的“动态”功能,实际上是在每次调用静态SQL语句时,通过为控制变量赋于不同的值,来使每静态SQL语句有一定的“选择”功能。
  
  一般地讲,在 SELECT 语句的 SELECT 部分实现选择功能,可以用DECODE函数。
  如:
  SELECT DECODE(字段1,'A',字段A, 'B',字段B, 'C',字段C, 字段D) FROM 表名;
  这样就可以根据每条记录的字段1的值来选择其它字段的值。当然这里要注意:字段A,B,C,D的类型要一致或可自动转换。
  
  还可以在WHERE部分实现选择功能。
  如:
  SELECT …… FROM 表名
  WHERE (其它必需的条件)
  AND (C_V !='0' OR 可选条件1)
  AND (C_V !='1' OR 可选条件2)
  AND (C_V !='3' OR 可选条件3)
  ……
  ;
  
  说明:
  1。上面语句的含义为:当控制变量C_V为0时,按 可选条件1 来选择;当控制变量C_V为1时,按 可选条件2 来选择……
  2。要注意,控制变量的名字不要与表中的原有字段名相同。
  3。上面的这段程序可以写在 PROCEDURE 或 FUNCTION 中,控制变量可以作为过程或函数的输入参数。
  4。省略号表示类似上面三行的语句可以写多次。
  5。上面所述的 WHERE 部分中条件的选择,可以用在任何语句的WHERE部分中。
  
  我想,以上的语句,也可以称做“伪动态SQL”吧!:)
【责编:admin】

--------------------next---------------------

阅读(230) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~