[求助]什么情况下会出现ORA-01002:fetch out of sequence的错误

KING 2004-01-09 06:08:52
存储过程中使用Cursor,在什么情况下会出现ORA-01002:fetch out of sequence的错误?我测试了一些语句,都没有找到这样的错误,请各位帮忙,或者能否提供一些例子,谢谢!
...全文
356 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
snowy_howe 2004-01-11
  • 打赏
  • 举报
回复
ORA-01002 fetch out of sequence

Cause: In a host language program, a FETCH call was issued out of sequence. A successful parse-and-execute call must be issued before a fetch. This can occur if an attempt was made to FETCH from an active set after all records have been fetched. This may be caused by fetching from a SELECT FOR UPDATE cursor after a commit. A PL/SQL cursor loop implicitly does fetches and may also cause this error.

Action: Parse and execute a SQL statement before attempting to fetch the data.

最好能把存储过程贴出来,方便分析。
Trace File Manager (TFM) - Using PHP and Oracle to manage your distributed trace files--------------------------------------------------------------------------------------Deployment InstructionsOracle Layer The Oracle JServer must be installed and exist in a valid state. Ensure that the directories specified in the parameters for USER_DUMP_DEST and BACKGROUND_DUMP_DEST are set up as utl_file_dir directives in the init.ora, eg utl_file_dir=myDB/oratrace/back utl_file_dir=myDB/oratrace/user Run all of the below mentioned scripts in any database whose trace files you want to view As SYS create a user account (TFMADMIN) See - tfmadmin_create.sql This account will be the repository for all of the Oracle objects used by the utility and will be responsible for retrieving information from the file system for presentation to the PHP layer. nb ! The supplied create script is for demo purposes only. You will need to specify a password and you may also want to assign alternative default and temporary tablespaces. create the external library call Windows - see extWindows.sql Linux - see extLinux.sql nb ! for unix it would be ; create or replace library systemcalls is ‘/lib/libc.so‘; / grant necessary database privileges to tfmadmin tfmAdmin_privs_and_syns.sql grant necessary java privileges to tfmadmin tfmAdmin_java_privs.sql if this fails with any spurious dbms_java errors then issue the statements manually, eg exec dbms_java.grant_permission (‘TFMADMIN‘, ‘SYS:java.io.FilePermission‘,‘your background_dump_dest‘, ‘read‘) exec dbms_java.grant_permission (‘TFMADMIN‘, ‘SYS:java.io.FilePermission‘,‘your user_dump_dest‘, ‘read‘) create a wrapper package for utl_file pk_utl_file.sql As TFMADMIN set up the tables, views and sequence tfmadmin_objects.sql create the controlling package pack_trace_file_manager.sqlJava Layer TraceFileDisplay.java you need to compile this and use loadjava to deploy it into the TFMADMIN account sample compilation & load - see javacomp.txt test the Java layer - RECOMMENDED I have seen occasions where the java security layer behaves unpredictably and this can result in the Trace File Display utility falsely reporting that there are no trace files in the trace directories. consequently it is a sensible idea to verify that your java layer is behaving as expected before you try starting up the utility as TFMADMIN, try this exec pack_trace_file_manager.pc_generate_file_list (‘BACKGROUND‘) if you get a "PL/SQL procedure completed successfully" then everything is OK if you get something like this ... * ERROR at line 1: ORA-29532: Java call terminated by uncaught Java exception: java.security.AccessControlException: th (java.io.FilePermission D:OCCdboratraceack read) has not been granted to TFMADMIN. The PL/SQL to dbms_java.grant_permission( ‘TFMADMIN‘, ‘SYS:java.io.FilePermission‘, ‘D:OCCdboratraceack‘, ‘rea ORA-06512: at "TFMADMIN.PACK_TRACE_FILE_DISPLAY", line 45 ORA-06512: at "TFMADMIN.PACK_TRACE_FILE_DISPLAY", line 135 ORA-06512: at line 1 then you will need to sort it out before you go any further. Firstly, check out Note:137280.1 on Metalink. If the error persists beyond the solution suggested here then try; as SYS grant JAVASYSPRIV, JAVAUSERPRIV to tfmadmin; If this does not help then you can always adopt the "Mit Kanonen auf Spatzen schie遝n" approach (Shooting sparrows with canons ...) ; exec dbms_java.grant_permission (‘TFMADMIN‘, ‘SYS:java.io.FilePermission‘,‘<>‘, ‘read‘); If that doesn‘t work then raise it with Oracle Support - there may well be a fundamental problem with your java layer.Apahe / PHP layer If you haven‘t already done so, deploy Apache and PHP in a centralised location. see http://otn.oracle.com/tech/opensource/php/apache/inst_php_apache_windows.html for a handy guide to deployment source code ; listTargets.php listFiles.php * retrieveTraceFile.php * tkprofDialog.php deleteFilesConfirmation.php * you may need to either remove or edit the YourDomain tag in here I found the easist way to make the oci connection work from a php source file was to specify the full connection string as it would appear in the tnsnames.ora - In our environment this included a domain name - what you do will depend on your personal environment ... configuration files user.conf - contains the username & password for db connections made to the TFMADMIN account from the php layer - edit as required targets.conf - contains a list of the connection details for the databases where TFMADMIN is deployed - edit as required cascading stylesheet - not supplied

17,137

社区成员

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

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