无效的oracle过程参数列表

时间:2011-12-14 14:35:20

标签: oracle vb6 ado

我有这样描述的oracle程序:

create or replace procedure "TEST_PROC" (
  param1 IN VARCHAR2, 
  param2 IN VARCHAR2, 
  output OUT BOOLEAN) is 
begin 
  output := True; 
end;

我有vb6代码填充/输出参数:

...
Set conn = CreateObject("ADODB.Connection")
conn.ConnectionString = "Provider=MSDAORA; ...
...

cmd.CommandText = "TEST_PROC"
cmd.CommandType = 4 'adCmdStoredProc

Dim v As String
v = "some-value"        
cmd.Parameters.Append cmd.CreateParameter("param1", 200, 1, 255, v)
cmd.Parameters.Append cmd.CreateParameter("param2", 200, 1, 255, v)
cmd.Parameters.Append cmd.CreateParameter("output", 11, 2, 1, 0)

cmd.Execute

但它在Execute上出现错误:

PLS-00306: wrong number or types of arguments in call to 'TEST_PROC'  

这里有什么问题? 先感谢您!

1 个答案:

答案 0 :(得分:2)

我认为你的问题在于程序中的BOOLEAN数据类型。 BOOLEAN不是数据库类型,它是PL / SQL类型,ADO只知道数据库类型。要对此进行测试,请将您的BOOLEAN输出参数替换为NUMBER或VARCHAR,并查看是否可以从中获取结果。或者,将此过程包装在另一个将BOOLEAN转换为另一种类型的过程中:

CREATE OR REPLACE PROCEDURE WRAP_PROC (param1 IN VARCHAR2
                                     , param2 IN VARCHAR2
                                     , output OUT INTEGER) IS
  v_out BOOLEAN;
BEGIN
  test_proc(param1, param2, v_out);
  IF v_out = TRUE THEN
    output := 1;
  ELSE
    output := 0;
  END IF;
END wrap_proc;
/