PLSQL ORA 00942通过测试窗口执行存储过程时出错"表不存在"

时间:2017-06-25 08:27:16

标签: plsql plsqldeveloper

用户登录到实例并在用户登录级别拥有过程并键入Array,而deparment表位于与其单位对应的用户级别。

例如在plsql中

prodcedure
| __ TestProc
键入
| __ id_array_input

| __ unit_details
用户
| __ Unit_Name
| __Unit_Name

其中Unit_name将对应于unit_details中的单位。 每个unit_name下面都有单独的表。在这个例子中,我正在使用department_details。

TypedArray of integers

create or replace type id_array_input VARRAY(20) OF NUMBER

存储过程

CREATE OR REPLACE PROCEDURE TESTPROC(id_array in id_array_input,output_data out id_array_input)

as

unit varchar2(55);

stmt varchar2(55);
count number;

    begin
        output_data:=id_array_input();

        for i in 1..id_array.count loop

        select unit_name into unit from unit_details where unit_id =id_array(i);

        stmt:="select count(*) from "|| unit||".department_details where department_name is not null';

        execute immediate stmt into count;  

        output_data.extend;
        output_data(i):=count;

        end loop;
    end;
end TESTPROC;

测试窗口程序调用

declare
input id_array_input;
output id_array_input;
as

input:=id_array_input(599,800);
TESTPROC(input,output);
for i in 1..output.count loop
dbms_output.put_line('-----------'||output(i)||'-------------');
end loop;
end ;

1 个答案:

答案 0 :(得分:0)

CREATE OR REPLACE PROCEDURE TESTPROC(id_array in id_array_input,output_data out id_array_input)
    authid current_user 
    as

    unit varchar2(55);

    stmt varchar2(55);
    count number;

        begin
            output_data:=id_array_input();

            for i in 1..id_array.count loop

            select unit_name into unit from unit_details where unit_id =id_array(i);

            stmt:="select count(*) from "|| unit||".department_details where department_name is not null';

            execute immediate stmt into count;  

            output_data.extend;
            output_data(i):=count;

            end loop;
        end;
    end TESTPROC;