excel - 传递布尔值的问题 - VBA ADODB Oracle 存储过程
问题描述
尝试使用 ADODB 执行 Oracle 存储过程。在将布尔值添加到过程之前没有问题。我认为问题出在 CreateParameter adBoolean DataTypeEnum 上。
错误:调用 WEIGH_PACKAGE_PR 中的参数数量或类型错误
甲骨文
PROCEDURE WEIGH_PACKAGE_PR
(in_action_code IN NUMBER,
in_pass_num IN NUMBER,
in_cont_no IN VARCHAR2,
in_scale_id IN VARCHAR2,
in_current_user IN NUMBER,
in_bypassnumber IN NUMBER,
in_override_tarewt IN BOOLEAN)
VBA
With db
If .state = adStateClosed Then
.ConnectionString = conStr
.CursorLocation = adUseClient
.Open
End If
End With
With cmd
.ActiveConnection = db
.NamedParameters = True
.CommandType = adCmdStoredProc
.CommandText = "COMMON_SCALES_PK.WEIGH_PACKAGE_PR"
.Parameters.Append .CreateParameter("in_action_code", adBigInt, adParamInput, , 1)
.Parameters.Append .CreateParameter("in_pass_num", adBigInt, adParamInput, , 1)
.Parameters.Append .CreateParameter("in_cont_no", adVarChar, adParamInput, 10, "I658638002")
.Parameters.Append .CreateParameter("in_scale_id", adVarChar, adParamInput, 6, "T05R02")
.Parameters.Append .CreateParameter("in_current_user", adBigInt, adParamInput, , 3737)
.Parameters.Append .CreateParameter("in_bypassnumber", adBigInt, adParamInput, , Null)
.Parameters.Append .CreateParameter("in_override_tarewt", adBoolean, adParamInput, 1, False)
Set rst = .Execute()
End With
解决方案
在 Oracle 12.1 之前,不能将 PL/SQL 数据类型用作绑定值,请参阅Oracle Database 12c 第 1 版 (12.1) 中的更改
ADODB 驱动程序也必须支持这样的数据类型。
您既没有告诉我们您使用的是哪个 Oracle 版本,也没有告诉我们使用哪个 ADODB 驱动程序。如果您仍然使用古老的 Microsoft 提供程序MSDAORA
,那么它肯定不适用于 BOOLEAN 值。
推荐阅读
- python - python - 如何使用python中的word tokenize函数删除列表中的编号?我得到了输出,但我需要没有数字
- python - 在 Python 中实现函数需要帮助
- mysql - 排除不适合掩码的值 - mySQL 中的按位运算
- firebase - 从 Firebase 存储中检索图像并在应用程序中查看图像
- c# - 将带有嵌套模型文件的 ReactJs FormData 发布到 .net core 2.2 web api
- json - 如何在 Postman 测试脚本中解析 JSON
- python - 如何从 CSV 文件中替换 python 中字符串的一部分?
- php - 从控制器的 LengthAwarePaginator 到刀片中的数据..?
- android - 如何从 1440x1080 Surface 获得 1920x1080 视频?
- sql - SQL Server 使用 where 条件创建 Unpivot 表