10-4
原文:
DECLARE
prod_cursor sys_refcursor;
BEGIN
IF ( input_param = 'C' )
THEN
OPEN prod_cursor FOR
SELECT * FROM prod_concepts
WHEREconcept_type = 'COLLATERAL'
AND concept_dt< TO_DATE( '01-JAN-2003', 慏D-MON-YYYY?;
ELSE
OPEN prod_cursor FOR
SELECT * FROM prod_concepts
WHEREconcept_category = 'ADVERTISING';
END IF;
LOOP
FETCH prod_cursor BULK COLLECT INTO .... LIMIT 500;
...procedural code to process results here...
EXIT WHEN prod_cursor%NOTFOUND;
END LOOP;
CLOSE prod_cursor;
END;
创建表
create table prod_concepts(concept_type varchar(20),concept_category varchar(20),concept_dt date);
insert into prod_concepts select 'COLLATERAL','ADVERTISING',TO_DATE( '01-JAN-2002', 'DD-MON-YYYY','NLS_DATE_LANGUAGE = AMERICAN')+level from dual connect by level<=500;
补充了部分变量后没有问题
DECLARE
prod_cursor sys_refcursor;
TYPE prod_array IS TABLE OF prod_concepts%ROWTYPEINDEX BY BINARY_INTEGER;
l_prod
prod_array;
input_param varchar(10):='C';
BEGIN
IF ( input_param = 'C' )
THEN
OPEN prod_cursor FOR
SELECT * FROM prod_concepts
WHEREconcept_type = 'COLLATERAL'
AND concept_dt< TO_DATE( '01-JAN-2003', 'DD-MON-YYYY','NLS_DATE_LANGUAGE = AMERICAN');
ELSE
OPEN prod_cursor FOR
SELECT * FROM prod_concepts
WHEREconcept_category = 'ADVERTISING';
END IF;
LOOP
FETCH prod_cursor BULK COLLECT INTO l_prod LIMIT 500;
--...procedural code to process results here...
dbms_output.put_line(l_prod.count);
EXIT WHEN prod_cursor%NOTFOUND;
END LOOP;
CLOSE prod_cursor;
END;
/
|