数组的长度,元素值不定吗?为什么不把数组的各个元素值作为参数传进来呢?  create or replace procedure proc_test(p1 in varchar2,p2 in varchar2,p3 in number,...) as ...

解决方案 »

  1.   

    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挨个给你写?
      

  2.   

    恩,数组的元素值不固定!下面是我在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;
          
          end if ;
    end;
      

  3.   

    c# 是不是有一个参数 params string[] cols  可以传   可以不传   也可以传一个 也可以传N多