大侠们,怎样给oracle存储过程传递数组参数啊
CREATE OR REPLACE PROCEDURE "PIC_INSERT" (FILENAME IN v_arrary) IS
F_LOB BFILE;
B_LOB BLOB;
BEGIN
for i in 1..10
loop
INSERT INTO PIC_LOB(PIC_ID, PIC)
VALUES (licheng.nextval,FILENAME(i));
end loop;
COMMIT;
END;
上面是存储过程Dim FILENAME() AS Variant;
FILENAME()=.........
Cmd.CommandText = "pic_insert"
Cmd.Parameters.Append Cmd.CreateParameter("FILENAME", adArray, adParamInput, 500, FILENAME)
Cmd.Execute 执行时出现如下错误
实时错误'3001' 参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突
CREATE OR REPLACE PROCEDURE "PIC_INSERT" (FILENAME IN v_arrary) IS
F_LOB BFILE;
B_LOB BLOB;
BEGIN
for i in 1..10
loop
INSERT INTO PIC_LOB(PIC_ID, PIC)
VALUES (licheng.nextval,FILENAME(i));
end loop;
COMMIT;
END;
上面是存储过程Dim FILENAME() AS Variant;
FILENAME()=.........
Cmd.CommandText = "pic_insert"
Cmd.Parameters.Append Cmd.CreateParameter("FILENAME", adArray, adParamInput, 500, FILENAME)
Cmd.Execute 执行时出现如下错误
实时错误'3001' 参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突
解决方案 »
- 谁能帮忙优化一下这个sql查询语句,谢谢!
- 请教一个问题,我有特别多的sql,如何实现自动执行sql然后自动导也excel?
- 关于打印的问题
- 用注释来大幅提升查询速度“/*+ STAR */” ,谁能给个解释呢?
- oracle9i优化不成功!alter system set shared_pool_size=40000000;
- 各位大虾,刚装的oracle出现ORA-01078错误怎么办?
- oracle 8.1.6一个触发器的疑问,哪位老兄帮忙解决一下!
- 土土的问
- 如何获取oracle服务器的ip地址?
- 为什么会出现这种情况?
- 请教ORACLE7登陆远程服务器?
- Oracle10gLiunx自启动问题?
CREATE OR REPLACE PROCEDURE "PIC_INSERT" (FILENAME IN v_arrary)
中的v_array是我在oracle定义的一个数组
SQL> create or replace type myvarray_list as varray(10) of varchar2(50);
2 /类型已创建。SQL> create or replace procedure show_list(
2 p_varlist in myvarray_list
3 )
4 is
5 str varchar2(50);
6 begin
7 for x in 1..p_varlist.count loop
8 dbms_output.put_line('p_varlist('||x||')='||p_varlist(x));
9 end loop;
10 end;
11 /过程已创建。SQL> exec show_list(myvarray_list('Oracle','DB2','Sql Server','mySql','DBA'));
p_varlist(1)=Oracle
p_varlist(2)=DB2
p_varlist(3)=Sql Server
p_varlist(4)=mySql
p_varlist(5)=DBAPL/SQL 过程已成功完成。SQL>
2 mysql varchar2(200);
3 begin
4 mysql:='begin show_list(myvarray_list('''||'Oracle'''||','''||'DB2'''||')); end;';
5 execute immediate mysql;
6 end;
7 /
p_varlist(1)=Oracle
p_varlist(2)=DB2PL/SQL 过程已成功完成。SQL>
你的方法我试过,是可以执行的关键是我想用vb给oracle的存储过程传递一个数组参数,老是出现错误
Cmd.Parameters.Append Cmd.CreateParameter("FILENAME", adArray, adParamInput, 500, FILENAME) 你数组定义的参数类型没有指定,可能不会匹配存储过程里数组的类型。
因为存储过程里定义的数组参数是自定义的,不是标准的。VB不可能知道这个类型。
1 create or replace procedure show_list(
2 p_varlist in myvarray_list
3 )
4 is
5 str varchar(50);
6 begin
7 for x in 1.. p_varlist.count loop
8 dbms_output.put_line('p_varlist('||x||')='||p_varlist(x));
9 end loop;
10* end;
c:\>/过程已创建。c:\>exec show_list(myvarray_list('oracle','db2','sqlserver'));PL/SQL 过程已成功完成。执行后没反映呀? 没也输出~~
set serveroutput on size 1000000