//定义
char v_task_id[13];
char dynstmttask[200];strcpy(dynstmttask.arr, "SELECT trim(a.id) FROM TASK a, plan c WHERE a.state_date<sysdate AND ROWNUM<=100;");

EXEC SQL PREPARE vtaskids FROM :dynstmttask;
EXEC SQL DECLARE v_task_ids CURSOR FOR vtaskids;
EXEC SQL OPEN v_task_ids;
//初始化
memset(v_task_id,0,sizeof(v_task_id));
EXEC SQL FETCH v_task_ids INTO v_task_id;v_task_id 就是取不到任何值。问题何在??

解决方案 »

  1.   

    那就有。SELECT trim(a.id) FROM TASK a, plan c WHERE a.state_date<sysdate AND ROWNUM<=100。不方便将数据贴出来
      

  2.   

    ...
    sql_cursor emp_cursor;
    ...
    EXEC ORACLE OPTION(select_error=no);
    EXEC SQL
        SELECT CURSOR(SELECT ename FROM emp WHERE deptno = :dept_num)
        INTO :emp_cursor FROM DUAL;
    EXEC ORACLE OPTION(select_error=yes);试试这个.
      

  3.   

    谢谢先。但是我想在pro*c声明游标,有没有不需要在存储过程创建游标的办法?
      

  4.   

    ??这个没在存储过程创建游标啊,是使用的cursor函数.
      

  5.   

    可能行,但是我需要查询的表是DBlink中的表。而且还有一些表表连接。用这个恐怕不是主流。。
      

  6.   

    应该不用担心这个吧.而且跟表是不是通过dblink读取也没关系啊.
    等其他人来看看.