数据库脚步为:
DECLARE
v_Empno dbms_sql.Number_Table;
v_SelectStmt VARCHAR2(200);
v_Cursor INTEGER;
v_BatchSize CONSTANT INTEGER := 5;
v_ReturnCode INTEGER;
v_NumRows NUMBER;
BEGIN
v_Cursor := dbms_sql.open_cursor;
v_SelectStmt := 'select empno from emp';
dbms_sql.parse(v_Cursor,v_SelectStmt,dbms_sql.native);
dbms_sql.define_array(v_Cursor,1,v_Empno,v_BatchSize,1);
v_ReturnCode := dbms_sql.execute(v_Cursor);
LOOP
v_NumRows := dbms_sql.fetch_rows(v_Cursor);
dbms_output.put_line('行数:'||v_NumRows);
IF v_NumRows = 0 THEN
EXIT;
END IF;
EXIT WHEN v_NumRows < v_BatchSize;
dbms_sql.column_value(v_Cursor,1,v_Empno);
FOR i IN 1..v_NumRows LOOP
dbms_output.put_line(v_Empno(i));
END LOOP;
END LOOP;
dbms_sql.close_cursor(v_Cursor);
EXCEPTION WHEN OTHERS THEN
IF dbms_sql.is_open(v_Cursor) THEN
dbms_sql.close_cursor(v_Cursor);
END IF;
RAISE;
END;显示的内容如下,为什么重复,有的数据显示不出来?求解!
行数:5
7369
7499
7521
7566
7654
行数:5
7369
7499
7521
7566
7654
行数:4
DECLARE
v_Empno dbms_sql.Number_Table;
v_SelectStmt VARCHAR2(200);
v_Cursor INTEGER;
v_BatchSize CONSTANT INTEGER := 5;
v_ReturnCode INTEGER;
v_NumRows NUMBER;
BEGIN
v_Cursor := dbms_sql.open_cursor;
v_SelectStmt := 'select empno from emp';
dbms_sql.parse(v_Cursor,v_SelectStmt,dbms_sql.native);
dbms_sql.define_array(v_Cursor,1,v_Empno,v_BatchSize,1);
v_ReturnCode := dbms_sql.execute(v_Cursor);
LOOP
v_NumRows := dbms_sql.fetch_rows(v_Cursor);
dbms_output.put_line('行数:'||v_NumRows);
IF v_NumRows = 0 THEN
EXIT;
END IF;
EXIT WHEN v_NumRows < v_BatchSize;
dbms_sql.column_value(v_Cursor,1,v_Empno);
FOR i IN 1..v_NumRows LOOP
dbms_output.put_line(v_Empno(i));
END LOOP;
END LOOP;
dbms_sql.close_cursor(v_Cursor);
EXCEPTION WHEN OTHERS THEN
IF dbms_sql.is_open(v_Cursor) THEN
dbms_sql.close_cursor(v_Cursor);
END IF;
RAISE;
END;显示的内容如下,为什么重复,有的数据显示不出来?求解!
行数:5
7369
7499
7521
7566
7654
行数:5
7369
7499
7521
7566
7654
行数:4
这个换错位置了吧,而且你进行了2此循环输出,意图是什么?