首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在PHP中使用输入参数执行Oracle游标

在PHP中使用输入参数执行Oracle游标
EN

Stack Overflow用户
提问于 2011-08-13 02:31:19
回答 1查看 1.2K关注 0票数 0

我很难弄清楚如何将数据作为输入添加到Oracle游标中,该游标正被发送到PHP包的存储过程中。

我正在尝试通过游标发送两条数据。我已经核实了数据在发送之前是正确的。

PHP代码:

代码语言:javascript
运行
复制
$finalpieces = explode('|',$lkeyarr[$i]); //0=unique id, 1=table
$conn = oci_connect($oracleUsername,$oraclePassword,$oracleService);
$stmt = OCIParse($conn,"BEGIN PROD.PKG_CORE_OBSERVER.StuckPages_Unlock(:cur_PageDetails); END;");
$cur = oci_new_cursor($conn);
OCIBindByName($stmt,':cur_PageDetails',$cur,-1,OCI_B_CURSOR);
ociexecute($stmt,OCI_DEFAULT);

存储过程详细信息:

代码语言:javascript
运行
复制
PROCEDURE StuckPages_Unlock
    (
      cur_PageDetails IN OUT SYS_REFCURSOR
    )

接受包含2个字段的引用游标:

代码语言:javascript
运行
复制
 ProcessID          NUMBER(2);
 PageUniqueID       NUMBER(10);

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-13 16:26:18

引用游标是指向结果集的指针。我们不能为引用游标赋值,只能将其与查询一起使用:

代码语言:javascript
运行
复制
open my_ref_cursor for
    select process_id, page_unique_id
    from some_table;

所以,你的方法是错误的。很难确定您要实现的是什么,但我认为您需要的是一个存储过程,它接受两个参数,用于查询表和返回引用游标。也许,就像这样:

代码语言:javascript
运行
复制
PROCEDURE StuckPages_Unlock
    (
      p_proc_id in some_table.process_id%type
      , p_page_id in some_table.page_unique_id_id%type
      , cur_PageDetails OUT SYS_REFCURSOR
    ) 
IS
    open PageDetails for
        select *
        from some_table
        where process_id = p_proc_id
        and page_unique_id = p_page_id;
END;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7044696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档