zoukankan      html  css  js  c++  java
  • PL/SQL中的where子句比较

    首先以一个例子说明一下where子句中比较语句的问题。
    DECLARE Department char(3);
    begin
        Department:='CS';
    delete from classes
     where department=Department;
         如果执行以上语句将产生灾难性的后果即:classes里的数据将全部删除,而不仅仅是那些department为CS的行。之所以出现这种情况,是因为SQL语句中标识符的分析方法。当PL/SQL引擎看到一个类似下面的条件:exp1=exp2
        exp1和exp2首先要被查看是否与操作的表中的列相匹配,然后再检查它们是否是PL/SQL语句块中的变量。PL/SQL是不区分大小写的,因此在上面的例子中,department和Department与classes表中的列相符,而不是与变量相符。
        如果该语句块有一标号,就可以使用与表列相同名字的变量,这只要在变量引用前加上标号就行了。这样,就能只删除那些满足department='CS'的行。
    《1_DeleteBlock》
    DECLARE Department char(3);
    begin
        Department:='CS';
    delete from classes
     where department=1_DeleteBlock.Department;
    需要说明的是,这种方法可以产生预期的效果,但不是一种好的编程风格。



  • 相关阅读:
    leetcode 第二题Add Two Numbers java
    二叉树中的那些常见的面试题(转)
    运行的指令
    Python常见经典 python中if __name__ == '__main__': 的解析
    软件测试基本概念
    JAVA Android王牌教程
    17个新手常见Python运行时错误
    QTP
    链表有关的常见面试题
    Robot Framework and Ride
  • 原文地址:https://www.cnblogs.com/abcdwxc/p/1071772.html
Copyright © 2011-2022 走看看