【问题标题】:Execute Oracle cursor with input parameters in PHP在 PHP 中使用输入参数执行 Oracle 游标
【发布时间】:2011-10-26 01:25:57
【问题描述】:

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

我正在尝试通过游标发送 2 条数据。我已经验证数据在发送前是正确的。

PHP 代码:

$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);

存储过程详细信息:

PROCEDURE StuckPages_Unlock
    (
      cur_PageDetails IN OUT SYS_REFCURSOR
    )

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

 ProcessID          NUMBER(2);
 PageUniqueID       NUMBER(10);

任何帮助将不胜感激。

【问题讨论】:

    标签: php oracle stored-procedures


    【解决方案1】:

    Ref Cursor 是一个指向结果集的指针。我们不能将值分配给 Ref 游标,我们将其与查询一起使用:

    open my_ref_cursor for
        select process_id, page_unique_id
        from some_table;
    

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

    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;
    

    【讨论】:

      猜你喜欢
      • 2011-10-12
      • 2016-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-25
      • 2016-12-18
      • 2012-02-12
      • 1970-01-01
      相关资源
      最近更新 更多