我需要从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;