在mysql中我写了存储过程,意图返回一个输出参数是一个游标,然后在盈盈程序里取得这个游标,读取数据记录。
问题是我该如何返回这个游标呢?
DELIMITER //
CREATE PROCEDURE PROC_TEST (OUT CUR CURSOR)
BEGIN
   OPEN CUR FOR SELECT * FROM TEST_TABLE;
END;
//
DELIMITER ;这样写可行吗?
我之所以要这么写是为了与ORACLE数据库兼容,所以试图通过游标返回结果集。

解决方案 »

  1.   

    MySQL和Oracle 毕竟有很多不一样的,比如不能直接返回游标给另一个过程。
    MySQL中可以返回一个记录集 , 比如直接 select * from test_table; ,你在程序中直接调这个存储过程,存储过程会返回这些记录集到你的客户端应用程序中。
    但无法返回游标。
      

  2.   

    惨了,我的要求是这样的,应用程序代码不用改,无论我是连接ORACLE还是MYSQL数据库,都可以顺利运行,
    现在是按ORACLE做的,它返回的结果集是按游标打开的方式返回的,那么MYSQL就要也用这个方式,我知道MYSQL可以直接返回结果集,但现在不能用这个方式,只能让它往ORACLE靠,也用游标返回。所以就有了如今这个问题。
    真的没有解决方法吗?
      

  3.   

    你返回这个游标后,是给你的应用程序的,还是给另外一个存储过程来用?如果是返回给应用程序,则没游标和记录集差别不大啊,除非你用的proc C客类底层的操作。
    如果是返回给另一存储过程,则可能试一下用临时表来解决,在你的这个proc_test中创建一个临时表供另一个存储过程来使用。 create temporary table xx.....
      

  4.   

    你返回这个游标后,是给你的应用程序的,还是给另外一个存储过程来用?如果是返回给应用程序,则没游标和记录集差别不大啊,除非你用的proc C客类底层的操作。
    如果是返回给另一存储过程,则可能试一下用临时表来解决,在你的这个proc_test中创建一个临时表供另一个存储过程来使用。 create temporary table xx.....
      

  5.   

    我要直接返回给JAVA应用程序,然后,JAVA应用程序去读取数据的,逐条读取并处理的,
    这样可以吗
      

  6.   

    我要直接返回给JAVA应用程序,然后,JAVA应用程序去读取数据的,逐条读取并处理的,那直接在存储过程中用 select * from xxx; 这种方式就可以了。
      

  7.   

    我要直接返回给JAVA应用程序,然后,JAVA应用程序去读取数据的,逐条读取并处理的,那直接在存储过程中用 select * from xxx; 这种方式就可以了。