静态SQL语句中的“动态”功能

文章作者 100test 发表时间 2007:03:26 17:54:22
来源 100Test.Com百考试题网


我们一般所说的静态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部分中。

相关文章


Oracle向MSSQLServer7.0的迁移(二)
Oracle向MSSQLServer7.0的迁移(四)
静态SQL语句中的“动态”功能
Oracle向MSSQLServer7.0的迁移(五)
关于lob字段的处理(通过modplsql处理blob)
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛