PL/SQL变量名和表中列名相同的错误
来源:互联网 发布:本地域名服务器在哪 编辑:程序博客网 时间:2024/04/26 01:46
话不多说,先来看一个例子吧。
从上面这个例子可以看出,当变量名name和表string中的列名NAME相同时,则会造成严重的后果--表string中所有的记录都会被删除!
之所以发生这种情况是因为SQL语句中的标示符被分析的方式时特别的。当PL/SQL引擎看到一个条件类似于exp1=exp2的时候,exp1和exp2首先被查看,看看它们是否与要操作的表中的列相匹配,然后再检查它们是否是PL/SQL块中的变量。PL/SQL是大小写不敏感的,因此上面那个例子中的name和NAME都与string表中的列相关联,而不是与变量相匹配。这个条件将对表中的每个行都求值为TRUE,这样所有的行就被删除了。
一个解决的办法是使用标签,我们仍然可以对变量使用与表列相同的名字,只要在变量引用之前放置标签就可以了。如下所示
我觉得这虽然可以解决问题,可毕竟不是长久之策。在编写PL/SQL代码的时候还是要养成良好的编程风格,这样才会使自己写的代码更容易被别人看懂,也容易自己将来维护。
- PL/SQL变量名和表中列名相同的错误
- PL/SQL变量名和表中列名相同的错误
- c++的函参名和变量名不能相同
- pl/sql 标识符与变量名
- 类的变量名 与 函数名不得相同,不然会报重定义的错误
- pl/sql变量和常量
- sql和PL/SQL中绑定变量的区别
- PL/SQL复合变量和参照变量
- PL/SQL 调试存储过程(报错ora-01036 非法的变量名/编号)
- PL/SQL中游标和游标变量的使用
- PL/SQL中游标和游标变量的使用
- PL/SQL中游标和游标变量的使用
- PL/SQL中游标和游标变量的使用
- Eclipse选中变量名,相同变量都变色的设置
- 关于js函数 形参和局部变量名相同 的问题
- PL/SQL拼接和使用绑定变量
- PL/SQL 数据类型和变量 -- 字符
- PL/SQL 数据类型和变量 -- 数值
- MSN是什么
- 网上求职易犯的四个错误
- test
- 2009-10-21小结
- [NetQ-EXAM]考察点极其简单也很常见
- PL/SQL变量名和表中列名相同的错误
- 遵守书写代码的规范,记住可用的const都要写。
- HTTP协议详解(真的很经典)
- VCS相关链接
- Java 之适配器模式
- Effective STL: 考虑用已序vector代替关联容器
- Web Dynpro及相关{转载}
- 不同的人,不同的生活
- 射线法判断点是否在多边形内的关键代码