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;
    需要说明的是,这种方法可以产生预期的效果,但不是一种好的编程风格。



  • 相关阅读:
    MyEclipse中代码提醒功能
    oracle12c创建用户等问题
    java中的构造块、静态块等说明
    jquery中的get和post、ajax有关返回值的问题描述
    最大半连通子图 BZOJ 1093
    最小生成树计数 BZOJ 1016
    水平可见直线 BZOJ 1007
    分金币 BZOJ 3293
    游走 BZOJ 3143
    糖果 BZOJ 2330
  • 原文地址:https://www.cnblogs.com/abcdwxc/p/1071772.html
Copyright © 2011-2022 走看看