我写了一个查询的存储过程。在 p_SQL := p_SQL || p_Dupdatesql ||p_Where;
EXECUTE IMMEDIATE p_SQL;发生ora 24338 错误。但是把p_SQL 提取出来执行没有任何问题。而且,如果查询的结果 为空的话没有任何问题。如果结果不为空。就有问题。p_SQL 的内容为
UPDATE TT_Hospital2_uZMAzlhRQe SET TT_Hospital2_uZMAzlhRQe.Levels00000000000000001002 = (select TT_Hospital_YMIUmSxuhN.Levels00000000000000001002 from TT_Hospital2_uZMAzlhRQe,TT_Hospital_YMIUmSxuhN
WHERE TT_Hospital2_uZMAzlhRQe.PartnerID = TT_Hospital_YMIUmSxuhN.PartnerID),
TT_Hospital2_uZMAzlhRQe.Employee00000000000000001002 = (SELECT TT_Hospital_YMIUmSxuhN.Employee00000000000000001002 FROM TT_Hospital2_uZMAzlhRQe,TT_Hospital_YMIUmSxuhN
WHERE TT_Hospital2_uZMAzlhRQe.PartnerID = TT_Hospital_YMIUmSxuhN.PartnerID)where exists (select ''1'' from TT_Hospital2_uZMAzlhRQe,TT_Hospital_YMIUmSxuhN WHERE TT_Hospital2_uZMAzlhRQe.PartnerID = TT_Hospital_YMIUmSxuhN.PartnerID)请问怎么回事啊????
EXECUTE IMMEDIATE p_SQL;发生ora 24338 错误。但是把p_SQL 提取出来执行没有任何问题。而且,如果查询的结果 为空的话没有任何问题。如果结果不为空。就有问题。p_SQL 的内容为
UPDATE TT_Hospital2_uZMAzlhRQe SET TT_Hospital2_uZMAzlhRQe.Levels00000000000000001002 = (select TT_Hospital_YMIUmSxuhN.Levels00000000000000001002 from TT_Hospital2_uZMAzlhRQe,TT_Hospital_YMIUmSxuhN
WHERE TT_Hospital2_uZMAzlhRQe.PartnerID = TT_Hospital_YMIUmSxuhN.PartnerID),
TT_Hospital2_uZMAzlhRQe.Employee00000000000000001002 = (SELECT TT_Hospital_YMIUmSxuhN.Employee00000000000000001002 FROM TT_Hospital2_uZMAzlhRQe,TT_Hospital_YMIUmSxuhN
WHERE TT_Hospital2_uZMAzlhRQe.PartnerID = TT_Hospital_YMIUmSxuhN.PartnerID)where exists (select ''1'' from TT_Hospital2_uZMAzlhRQe,TT_Hospital_YMIUmSxuhN WHERE TT_Hospital2_uZMAzlhRQe.PartnerID = TT_Hospital_YMIUmSxuhN.PartnerID)请问怎么回事啊????
解决方案 »
- 面试遇到数据库设计的问题(不用外键,用什么方法可以达到用外键的效果)
- 请教个SQL查询问题
- 在pl/sql里修改system的密码.则提示: 提示“ORA-04042:过程、函数、程序包或程序包体不存在”,
- 单机安装oracle10g 无法找到主机ip
- 存储过程处理销量数据速度快,数据越大,速度越慢,这是为什么。
- 低级问题:视图中如何建立id?求教达人
- 新手老问题,关于management server登陆
- bdf档案转换成dmp档案问题
- 表名字必须用英文么?表中的字段名字也必须用英文么 ?
- oracle 相关子查询问题
- 初学pl/sql,不明白为什么有些对象上有小红叉?
- 麻烦大家帮我看看,关于UTL_FILE的使用问题
p_Dupdatesql
p_Where
我建议最好在EXECUTE IMMEDIATE 之前用
dbms_ouput.put_line(p_sql);
看与你预想的有什么不同!
而且DBMS_OUTPUT.PUTLINE()怎么会报错呢?
UPDATE TT_Hospital2_uZMAzlhRQe SET (Levels00000000000000001002,Employee00000000000000001002) = (select Levels00000000000000001002,Employee00000000000000001002 from TT_Hospital_YMIUmSxuhN WHERE TT_Hospital2_uZMAzlhRQe.PartnerID = TT_Hospital_YMIUmSxuhN.PartnerID) where exists (select 1 from TT_Hospital_YMIUmSxuhN WHERE TT_Hospital2_uZMAzlhRQe.PartnerID = TT_Hospital_YMIUmSxuhN.PartnerID)
后再看看是否出错?
还有就是直接将上面的SQL赋值给p_SQL,看看是否还出错?
UPDATE TABLE
SET (COL1,COL2)=(VALUE1,VALUE2)这种格式吗?楼主的方式是正确的啊?可能就是拼字符串的时候出了点差错,所以我建议他打印出来看看!
24338, 00000, "statement handle not executed"
// *Cause: A fetch or describe was attempted before executing a
// statement handle.
// *Action: Execute a statement and then fetch or describe the data.