php怎么利用oracle查询结果,尝试使用PHP从Oracle访问select函数

您好,我试图访问一个简单的函数,该函数返回选择查询的结果,当我使用PHP访问它时,它向我扔了resource(5)而不是结果.

$connect = oci_connect('tiger','scott','host/user');

if(!$connect){

$e = oci_error();

trigger_error(htmlentities($e['message'],ENT_QUOTES),E_USER_ERROR);

}

$qu = oci_parse($connect, 'select selectMe(:name) from dual');

$name = (string)'test1';

oci_bind_by_name($qu,":name",$name);

oci_execute($qu);

$row = oci_fetch_assoc($qu);

var_dump($row);

selectMe函数非常简单,它仅从表中检索数据并返回符合条件的几行.

CREATE OR REPLACE FUNCTION selectMe( temp_name varchar2(100) )

return SYS_REFCURSOR is my_ret SYS_REFCURSOR;

BEGIN

open my_ret

FOR select myTab_ID, myTab_NAME, myTab_AGE, myTab_SCORE

from myTab

where trim(myTab_name) = temp_name;

RETURN my_ret;

END;

这很简单.现在,我无法理解为什么我得到了resource(5)来指示错误.我在var_dump结果中得到的实际消息是

array(1) { [“SELECTME(:NAME)”]=>

resource(5) of type (oci8 statement)

解决方法:

我不是PHP开发人员.但是,我可以从Oracle PHP wiki处偷取,以猜测它看起来像

$conn = oci_connect('myusername', 'mypassword', 'mydb');

$stid = oci_parse($conn, "begin :rc := selectMe(:name); end;");

$refcur = oci_new_cursor($conn);

oci_bind_by_name($stid, ':rc', $refcur, -1, OCI_B_CURSOR);

oci_bind_by_name($stid, ':name', 'test1');

oci_execute($stid);

oci_execute($refcur);

oci_fetch_all($refcur, $res);

var_dump($res);

oci_free_statement($stid);

oci_close($conn);

标签:oracle,plsql,sql,php,function

来源: https://codeday.me/bug/20191023/1914043.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值