用户登录到实例并在用户登录级别拥有过程并键入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 ;
答案 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;