在VBScript中使用Oracle ADO调用Oracle包过程时,输出参数为空

时间:2018-10-22 12:05:22

标签: oracle vbscript ado

我需要从VBScript(从PowerDesigner应用程序)调用Oracle打包过程。它是64位应用程序,因此我正在使用Oracle 64位ODBC驱动程序(Oracle客户端12.1.0.2)。

该工作应使用以下代码完成,该代码可以正常运行,但输出值为空:

Const ORAUser = "****"               
Const ORAPass = "****"     
Const ORASchema = "****"           
Const ORAInst = "****"                    
Const ORADRV  = "Oracle in OraClient12Home1"
Const ADO_CMD_STORED_PROC = 4

Dim Conn, ConnString, CmdStoredProc

Set Conn = CreateObject("ADODB.Connection")
ConnString = "Driver={" + ORADRV + "};Dbq=" + ORAInst + ";Uid=" + ORAUser + ";Pwd=" + ORAPass + ";"
Conn.Open ConnString

Set CmdStoredProc = CreateObject("ADODB.Command")
With CmdStoredProc
  Set .ActiveConnection = Conn
  .CommandText = ORASchema & ".PDLOCKS_ADMIN.VBS_TEST"
  .CommandType = ADO_CMD_STORED_PROC
  .Parameters.Append CmdStoredProc.CreateParameter("i_input_num", 5, 1, 0, 1) 
  .Parameters.Append CmdStoredProc.CreateParameter("i_input_vchar", 200, 1, 4000, "1") 
  .Parameters.Append CmdStoredProc.CreateParameter("o_output_num", 5, 2, 0)
  .Parameters.Append CmdStoredProc.CreateParameter("o_output_vchar", 200, 2, 4000)
  .Execute
  Output .Parameters("o_output_num").Value ' EMPTY :-(
  Output .Parameters(2) ' EMPTY :-(
End With  

Conn.Close
Set Conn = Nothing
Set CmdStoredProc = Nothing

在Oracle数据库打包过程中,所有内容均已正确处理,并且输入和输出参数保存在表TEST中:

PROCEDURE VBS_TEST (
  i_input_num    in  number
 ,i_input_vchar  in varchar2
 ,o_output_num   out number
 ,o_output_vchar out varchar2
)
IS
BEGIN
  insert into test values (to_char(i_input_num) || i_input_vchar);
  o_output_num := i_input_num + 1;
  o_output_vchar := i_input_vchar || '1';
  insert into test values (to_char(o_output_num) || o_output_vchar);
  commit;
END;

0 个答案:

没有答案