我有这样描述的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'
这里有什么问题? 先感谢您!
答案 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;
/