1用vvv varchar2(4000) :='aaa,b4,c5,20'代替数组2create type type_my is varray(100) of varchar2(40);create procedure pro_xxxx(p1 in type,...) as具体怎么调用,你不说自己用什么调用谁知道。c,php,java挨个给你写?
恩,数组的元素值不固定!下面是我在plsql下创建的存储过程,我在C#中要如何传递数组参数呢?--定义一种类型,可以看做一张表(针对testArrayTable表,id 使用触发器自动添加,不用再此处出现) create or replace type testArrayType as object ( tname varchar2(50), tpwd varchar2(50) );--创建 testArrayType 类型用于在存储过程里使用 create or replace type testArrayTypeProc as table of testArrayType;--创建存储过程,使用数组参数(testArrayTypeProc) create or replace procedure testArrayTypeProducd ( testArrayTypeProcParam in testArrayTypeProc default null ) is begin
--判断数组是否为空 if testArrayTypeProcParam.count!=0 then
--循环插入数据 for i in 1..testArrayTypeProcParam.count loop --此处循环插入数据 insert into testArrayTable(tname,tpwd) values(testArrayTypeProcParam(i).tname,testArrayTypeProcParam(i).tpwd); --此处在playsql中查看传入到存储过程的数据(可以在plsql的输出中看到以下输出的内容) dbms_output.put_line('输入的tname:'||testArrayTypeProcParam(i).tname||'输入的tpwd:'||testArrayTypeProcParam(i).tpwd); end loop; commit;
create or replace type testArrayType as object
(
tname varchar2(50),
tpwd varchar2(50)
);--创建 testArrayType 类型用于在存储过程里使用
create or replace type testArrayTypeProc as table of testArrayType;--创建存储过程,使用数组参数(testArrayTypeProc)
create or replace procedure testArrayTypeProducd
(
testArrayTypeProcParam in testArrayTypeProc default null
)
is
begin
--判断数组是否为空
if testArrayTypeProcParam.count!=0 then
--循环插入数据
for i in 1..testArrayTypeProcParam.count
loop
--此处循环插入数据
insert into testArrayTable(tname,tpwd) values(testArrayTypeProcParam(i).tname,testArrayTypeProcParam(i).tpwd);
--此处在playsql中查看传入到存储过程的数据(可以在plsql的输出中看到以下输出的内容)
dbms_output.put_line('输入的tname:'||testArrayTypeProcParam(i).tname||'输入的tpwd:'||testArrayTypeProcParam(i).tpwd);
end loop;
commit;
end if ;
end;