r - 在 R 中使用 m_ref_cursor 参数执行存储过程
问题描述
我正在尝试使用REF CURSOR
参数执行存储过程。
我的存储过程是这样的:
PROCEDURE procName(p_in_str IN VARCHAR2, p_out_result IN OUT SYS_REFCURSOR) ...
我根据这些帖子尝试从 R 中执行它:
在许多错误之后,我已经到了无法前进的地步。这些是我目前的方法
尝试 1
# Not error but not return data temp_output1 <- data.frame(p_in_str = "My string", stringsAsFactors = FALSE) attr(temp_output1$p_in_str, "ora.parameter_name") <- "p_in_str"; attr(temp_output1$p_in_str, "ora.parameter_mode") <- "IN"; rs <- oracleProc(con, "DECLARE c SYS_REFCURSOR; BEGIN procname(:p_in_str, c); END;", data = temp_output1)
尝试 2
# Wrong number or types of arguments temp_output2 <-data.frame(p_in_str = "My string", p_out_ref = "p_out_ref", stringsAsFactors = FALSE) attr(temp_output2$p_in_str, "ora.parameter_name") <- "p_in_str"; attr(temp_output2$p_in_str, "ora.parameter_mode") <- "IN"; attr(temp_output2$p_out_ref, "ora.parameter_name") <- "p_out_ref"; attr(temp_output2$p_out_ref, "ora.parameter_mode") <- "IN OUT"; attr(temp_output2$p_out_ref, "ora.type") <- "SYS_REFCURSOR" rs <- oracleProc(con, "BEGIN procname(:p_in_str, :p_out_ref); END;", data = temp_output2)
.oci.oracleProc(conn, statement, data = data, prefetch = prefetch,
: ORA-06550: 第 2 行第 18 列: PLS-00306: 调用“procname”时参数数量或类型错误 ORA-06550:第 2 行第 18 列:PL/SQL:语句被忽略尝试 3
# Bind data does not match bind specification temp_output3 <-data.frame(p_in_str = "My string", p_out_ref = as.character(NA), stringsAsFactors = FALSE) attr(temp_output3$p_in_str, "ora.parameter_name") <- "p_in_str"; attr(temp_output3$p_in_str, "ora.parameter_mode") <- "IN"; attr(temp_output3$p_out_ref, "ora.parameter_name") <- "p_out_ref"; attr(temp_output3$p_out_ref, "ora.parameter_mode") <- "IN OUT"; attr(temp_output3$p_out_ref, "ora.type") <- "m_ref_cursor" rs <- oracleProc(con, "DECLARE c SYS_REFCURSOR; BEGIN procname(:p_in_str, c); END;", data = temp_output3)
.oci.oracleProc(conn, statement, data = data, prefetch = prefetch, 中的错误:绑定数据与绑定规范不匹配
解决方案
推荐阅读
- python - Pyinstaller 转换为 EXE 病毒检测
- javascript - 我如何知道将使用 ffmpeg 下载的输出的文件大小?
- r - R Shiny如何将条件复选框为真的DT表中的值传递到文本输入中
- r - `rep()` 向量不同的长度
- python - GitHub Actions:工作流程永无止境
- vue.js - 从方法中动态返回自定义组件
- android - 无法识别的 VM 选项“MaxPermSize=2048m”
- c++ - 编码初学者,卡在识别 C++ 中的质数的代码中......有人可以纠正这段代码中的错误吗?
- python - 将具有依赖关系的 .py 文件转换为 .exe
- c# - 在 SendGrid 中添加联系人并获取联系人 ID