如果是显式游标,需要人工关闭。用close cursor_name
如果是隐式游标,不需要人工关闭。

解决方案 »

  1.   

    这样的存储过程,何时?如何关闭游标?
    CREATE OR REPLACE  PROCEDURE "WC_C#_USER"."GET_PROJECT_INFO" (
      iProject_Num varchar,
      p_rc out WC_c#.myrctype
    )
    as
      sqlstr varchar(500);begin
      sqlstr := 'select * from project where project_num = '''||iProject_Num||''' ';  OPEN p_rc FOR sqlstr;
    end;
      

  2.   

    如果是显式游标,需要人工关闭。
    如果是隐式游标,不需要人工关闭。
    你已经显式地打开了游标,当然要手工关闭了。
    再你处理完成游标后,加 close p_rc ;
      

  3.   

    谁调用它,谁负责关闭
    如过在pl/sql中调用它,close <p_rc 对应的实参名称>
    如果在应用程序中调用它,执行recordset.close()关闭它
      

  4.   

    楼上说的很对:drabit(square) 
    两种方式都可以关闭游标。对于你写的存储过程中你的游标是返回值,所以不能再数据库中关闭。
    只有在应用程序中关闭游标。
      

  5.   

    游标用完了一定要关闭,因为游标在打开的时候oracle会隐式的对行加锁。
    MSN:[email protected]
      

  6.   

    to hewei2003():"游标在打开的时候会隐式的对行加锁"是sql server的专利,oracle是不会的,除非你用"for update"