plsql可以php不行,我可以从匿名的pl/sql块返回值到php吗?

我的决定是:

function execute_procedure($procedure_name, array $params = array(), &$return_value = ''){

$sql = "

DECLARE

ERROR_CODE VARCHAR2(2000);

ERROR_MSG VARCHAR2(2000);

RETURN_VALUE VARCHAR2(2000);

BEGIN ";

$c = $this->get_connection();

$prms = array();

foreach($params AS $key => $value) $prms[] = ":$key";

$prms = implode(", ", $prms);

$sql .= ":RETURN_VALUE := ".$procedure_name."($prms);";

$sql .= " END;";

$s = oci_parse($c, $sql);

foreach($params AS $key => $value)

{

$type = SQLT_CHR;

if(is_array($value))

{

if(!isset($value['value'])) continue;

if(!empty($value['type'])) $type = $value['type'];

$value = $value['value'];

}

oci_bind_by_name($s, ":$key", $value, -1, $type);

}

oci_bind_by_name($s, ":RETURN_VALUE", $return_value, 2000);

try{

oci_execute($s);

if(!empty($ERROR_MSG))

{

$data['success'] = FALSE;

$this->errors = "ÐÑибка: $ERROR_CODE $ERROR_MSG";

}

return TRUE;

}

catch(ErrorException $e)

{

$this->errors = $e->getMessage();

return FALSE;

}

}

例子:

execute_procedure('My_procedure', array('code' => 5454215), $return_value);

echo $return_value;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值