我正在尝试将表中的数据添加到plsql-array =>表。 我的表看起来像这样:
CREATE TABLE "MY_DATABASE"."EMPLOYEES"
( "EMPLOYEE_ID" NUMBER(6,0),
"FIRST_NAME" VARCHAR2(20 BYTE),
"LAST_NAME" VARCHAR2(25 BYTE) CONSTRAINT "EMP_LAST_NAME_NN" NOT NULL ENABLE,
"EMAIL" VARCHAR2(25 BYTE) CONSTRAINT "EMP_EMAIL_NN" NOT NULL ENABLE, )
现在我正在尝试将数据保存到类型"是表",但不会选择任何数据 而且我没有进入我的循环。
SET SERVEROUTPUT ON
declare
TYPE employees_table_typ IS TABLE OF employees%ROWTYPE
INDEX BY BINARY_INTEGER;
employees_table employees_table_typ;
v_index BINARY_INTEGER;
begin
dbms_output.put_line('COUNT: '||employees_table.count);
v_index := employees_table.first;
dbms_output.put_line('BEFORE Loop ');
while v_index is not NULL loop
dbms_output.put_line('FIRST_NAME: '|| employees_table(v_index).FIRST_NAME);
dbms_output.put_line('INDEX: ' || v_index);
v_index := employees_table.next (v_index);
end loop;
dbms_output.put_line('AFTER Loop ');
end;
这可能是错的?当我计算我的记录时,我得到0.
答案 0 :(得分:3)
你声明了一个变量,坚果你永远不会把任何东西放进去,所以当你检查记录的数量时它是空的。
如果要使用变量来托管某些值,则必须填充它;例如,这个
DECLARE
TYPE employees_table_typ IS TABLE OF employees%ROWTYPE
INDEX BY BINARY_INTEGER;
employees_table employees_table_typ;
BEGIN
DBMS_OUTPUT.put_line('BEFORE - COUNT: ' || employees_table.COUNT);
--
select *
bulk collect into employees_table
from employees;
DBMS_OUTPUT.put_line('AFTER - COUNT: ' || employees_table.COUNT);
END;
给出
BEFORE - COUNT: 0
AFTER - COUNT: 2
标量变量的相同之处:
declare
v varchar2(10);
begin
dbms_output.put_line('before - v: ' || v);
--
select 'some value'
into v
from dual;
dbms_output.put_line('after - v: ' || v);
end;
给出:
before - v:
after - v: some value