gpt4 book ai didi

php - 我可以从匿名 PL/SQL block 向 PHP 返回值吗?

转载 作者:搜寻专家 更新时间:2023-10-31 21:46:19 29 4
gpt4 key购买 nike

我正在使用 PHP 和 OCI8 执行匿名 Oracle PL/SQL 代码块。有什么方法可以让我绑定(bind)变量并在 block 完成时获取其输出,就像我以类似方式调用存储过程时一样?

$SQL = "declare
something varchar2 := 'I want this returned';
begin
--How can I return the value of 'something' into a bound PHP variable?
end;";

最佳答案

您可以通过在名称和数据类型声明之间使用关键字 OUT 来定义输出参数。即:

CREATE OR REPLACE PROCEDURE blah (OUT_PARAM_EXAMPLE OUT VARCHAR2) IS ...

如果未指定,IN 为默认值。如果你想将参数同时用作输入和输出,请使用:

CREATE OR REPLACE PROCEDURE blah (INOUT_PARAM_EXAMPLE IN OUT VARCHAR2) IS ...

以下示例创建了一个带有 IN 和 OUT 参数的过程。然后执行该过程并打印出结果。

<?php
// Connect to database...
$c = oci_connect("hr", "hr_password", "localhost/XE");
if (!$c) {
echo "Unable to connect: " . var_dump( oci_error() );
die();
}

// Create database procedure...
$s = oci_parse($c, "create procedure proc1(p1 IN number, p2 OUT number) as " .
"begin" .
" p2 := p1 + 10;" .
"end;");
oci_execute($s, OCI_DEFAULT);

// Call database procedure...
$in_var = 10;
$s = oci_parse($c, "begin proc1(:bind1, :bind2); end;");
oci_bind_by_name($s, ":bind1", $in_var);
oci_bind_by_name($s, ":bind2", $out_var, 32); // 32 is the return length
oci_execute($s, OCI_DEFAULT);
echo "Procedure returned value: " . $out_var;

// Logoff from Oracle...
oci_free_statement($s);
oci_close($c);
?>

引用:

关于php - 我可以从匿名 PL/SQL block 向 PHP 返回值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2953566/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com