oracle数据库,PLS-S-01705, 如果游标说明中有 UNION 或 ORDER_BY, 则由游标指定的表不可更新

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle数据库,PLS-S-01705, 如果游标说明中有 UNION 或 ORDER_BY, 则由游标指定的表不可更新相关的知识,希望对你有一定的参考价值。

语言:PRO*C

代码:

EXEC SQL DECLARE cur_mercounthistory CURSOR FOR SELECT ......... FROM FENGRUIXIANG.MER_COUNT_HISTORY WHERE ST_FLAG = '0' ORDER BY ACTION,MODIFYDATE FOR UPDATE;
..............
EXEC SQL UPDATE fengruixiang.MER_COUNT_HISTORY SET ST_FLAG='1' WHERE CURRENT OF cur_mercounthistory;
报错:
PLS-S-01705, 如果游标说明中有 UNION 或 ORDER_BY, 则由游标指定的表不可更新

修改代码:去掉FOR UPDATE之后,
警告:
PCC-W-02342, 对未使用 FOR UPDATE 子句定义的游标使用 WHERE CURRENT OF
注:运行代码却可以正常工作

说明:
1、如果order by和for update 不能一起使用,我一共写了52段程序,都是这种用法,为什么只有这一段报错?
2、报警告后,为什么代码还能正确执行?
3、order by和for update如何一起使用?
4、我上网搜了好久的答案,都是什么“order by和for update在开游标的时候不能一起用”,还有的说什么“既然开游标了就不不需要用order by”,但是我这段代码必须排序。
5、求高大上技术神解答。

参考技术A 1:游标中有进行排序,在update操作第一条之后,有可能会导致排序发生变化第一条变到了第二条,在第二次遍历时,应该处理的是第二条记录但依然处理第一条。你觉得合理吗?
2:只是警告,并不是错误,警告并不会影响结果的正确与否,ok?这种警告的原因是wheere current of有释放锁的操作,但由于你之前并没有加上for update锁表,那就不需要释放锁了,因为根本不存在锁。
3:。。。
4:order by 只是一种对结果集的排序操作,既然你又不需要显示它,对它的排序毫无意义,反而会加系ORA的负荷。
5:帖的代码太难看,麻烦下次搞个工整的或者贴图。

怎么检测本机是不是装了数据库oracle

一、如果是windows操作系统,打开任务管理器->进程,如果里面有oracle.exe,证明本机已装oracle数据库,并且数据库正在运行。

二、在DOS命令下输入:telnet 127.0.0.1 1521

如果未出现连接到端口失败,那就表式有oracle服务

这个方法也可以检测远端计算机是否安装oracle服务

在DOS命令下输入:set 回车 , 看到oracle_home的字样,也可以看到。

这种方法可以检测许多应用服务,如邮件、DNS、FTP、WEB等等

其他方法在控制面板安装卸载那里也可以看

如果你是将服务器端安装在本地,而且只使用sqlplus或只使用JAVA的JDBC进行开发,

不需要使用其他的第三方客户端去访问Oracle数据库,你可以不安装Oracle的客户端。

当然,为了使用方面,还是安装Oracle客户端比较好,Oracle的客户端与服务器端是可以同时安装的,没有冲突的。访问的时候就是直接网址就行了

数据库 写 22.11.92.1:1521/orcl

参考技术A 如果是windows操作系统,打开任务管理器->进程,如果里面有oracle.exe,证明本机已装oracle数据库,并且数据库正在运行。本回答被提问者采纳 参考技术B 在DOS命令下输入:telnet 127.0.0.1 1521
如果未出现连接到端口失败,那就表式有oracle服务
这个方法也可以检测远端计算机是否安装oracle服务

在DOS命令下输入:set 回车 , 看到oracle_home的字样,也可以看到。

这种方法可以检测许多应用服务,如邮件、DNS、FTP、WEB等等
其他方法在控制面板安装卸载那里也可以看
参考技术C 服务里有ORACLE开头的服务名 参考技术D 打开360 安全卫士,在软件卸载那里可以找到你是否安装此文件

以上是关于oracle数据库,PLS-S-01705, 如果游标说明中有 UNION 或 ORDER_BY, 则由游标指定的表不可更新的主要内容,如果未能解决你的问题,请参考以下文章

oracle数据库标签如果没有goto会执行么

oracle数据库的上机题求助:

oracle表中如果存在就不更新,如果不存在就插入的语句怎么写

oracle数据库中 如果按商家的距离排序?

如果需要从oracle中每天定时导出数据用啥方法?

oracle数据库调用存储过程