delete from 不能执行

lookfeng 2006-06-09 09:42:22
CREATE OR REPLACE PROCEDURE UPDATEALLSTOP
(
cityname IN NVARCHAR2
)
AS
BEGIN
delete from PT_STOP where PTS_CITY=cityname;

FOR REC IN ( SELECT * FROM PT_LINE where PTL_CITY=cityname )
LOOP
inputstop(cityname, rec.PTL_NAME, rec.PTL_GOSTOPLIST, rec.PTL_RTNSTOPLIST);
END LOOP;

COMMIT;
END;


上面过程,每次执行到delete from PT_STOP where PTS_CITY=cityname;时就过不去,为什么?

不是权限的问题,用SYS用户也不行。
...全文
713 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
lookfeng 2006-07-10
  • 打赏
  • 举报
回复
如果锁定了,导致不能执行,
那这个过程该怎么写?是否要每次判断一下是否锁定,然后执行delete操作吗?
panku 2006-07-06
  • 打赏
  • 举报
回复
以DBA角色, 查看当前数据库里锁的情况可以用如下SQL语句:

select t2.username,t2.sid,t2.serial#,t2.logon_time
from v$locked_object t1,v$session t2
where t1.session_id=t2.sid order by t2.logon_time;

如果有长期出现的一列,可能是没有释放的锁。

然后可以用下面SQL语句杀掉长期没有释放非正常的锁:

alter system kill session 'sid,serial#';
lookfeng 2006-07-06
  • 打赏
  • 举报
回复
没人知道吗?否则只有结帖了.
lookfeng 2006-06-15
  • 打赏
  • 举报
回复
我用PL/sql develop 中调试
执行到
delete from PT_STOP where PTS_CITY=cityname;
就停止,也不报错。
xiaoxiao1984 2006-06-12
  • 打赏
  • 举报
回复
呵呵,可能表被锁住或者数据库日志不够了;
delete from PT_STOP where PTS_CITY=cityname; 的记录是否非常多,如果非常多的话,很有可能就是数据库的日志文件不够了
posemanboy 2006-06-12
  • 打赏
  • 举报
回复
90%是 表被锁定。
xiaosheng2008 2006-06-12
  • 打赏
  • 举报
回复
把报错贴出来
jerryxx 2006-06-12
  • 打赏
  • 举报
回复
是不是有外键约束,子表中有记录?
fjmingyang 2006-06-12
  • 打赏
  • 举报
回复
在pl/sql develop 中调试下这个过程,不就行了,什么错误一目了然
fest 2006-06-12
  • 打赏
  • 举报
回复
用 deleter * from 替换试一下
yuyu1980 2006-06-12
  • 打赏
  • 举报
回复
有外健吧 或者回滚空间不够!
goldarcher2005 2006-06-11
  • 打赏
  • 举报
回复
把错误贴出来,要不怎么解决阿
hyrongg 2006-06-09
  • 打赏
  • 举报
回复
外键约束?
doer_ljy 2006-06-09
  • 打赏
  • 举报
回复
不是表不存在,否则不可能正常编译。
报的什么错误?
hyrongg 2006-06-09
  • 打赏
  • 举报
回复
不会吧,有这张表存在不?
多壮志 2006-06-09
  • 打赏
  • 举报
回复
比较可能的情况是rollback seg不够,或者是被lock.
到oem中看看异常情况。
zxhcloth 2006-06-09
  • 打赏
  • 举报
回复
你能把错误提示贴出来看下吗??

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧