表 M_C只有一个整数字段Name。
存储过程:
- create or replace
- PROCEDURE CDONN(
- Name IN NUMBER,
- Result OUT SMALLINT,
- ErrorMsg OUT VARCHAR
- )
- as
- subNodeCount INTEGER := 0;
- BEGIN
- Result := 0;
- ErrorMsg := '';
- SELECT COUNT(*) INTO subNodeCount FROM M_C WHERE M_C.Name = Name;
- IF subNodeCount > 0 THEN
- Result := 1;
- ErrorMsg := '不能删除!';
- END IF;
- END CDONN;
输入参数Name=100,oracle运行此存储过程后。subNodeCount结果为1。 实际上M_C表中只有一条记录name=10。 但是在其他存储过程中使用这种形式的select语句时,没有遇见问题。经多次测试,发现似乎是oracle把where子句优化了 最终通过修改参数名或者M_C的字段名,解决此问题。即,在where子句中保证字段名和参数名不同,
|