我有一个填充全局临时表的存储过程。
CREATE GLOBAL TEMPORARY TABLE temptable ( ... ) ON COMMIT DELETE ROWS;
我想运行存储过程,然后选择添加到临时表中的行。
$conn = oci_connect(...);
$sql = "BEGIN POPULATETEMPTABLE END;"
$stmt = oci_parse($conn, $sql);
oci_execute($stmt);
oci_free_statement($stmt);
$sql = "SELECT ... FROM temptable";
$stmt = oci_parse($conn, $sql);
oci_execute($stmt);
while ($row = oci_fetch_assoc($stmt))
{
...
}
oci_free_statement($stmt);
oci_close($conn);
该代码未获取任何行。所以我决定将选择放在数据库的同一个往返中:
$conn = oci_connect(...);
$sql = "
BEGIN POPULATETEMPTABLE END;
SELECT ... FROM temptable
"
$stmt = oci_parse($conn, $sql);
oci_execute($stmt);
while ($row = oci_fetch_assoc($stmt))
{
...
}
oci_free_statement($stmt);
oci_close($conn);
这给了我错误:
PLS-00103: Encountered the symbol "SELECT"
如果我将 SELECT 放在 BEGIN ... END 内;然后我得到这个错误:
PLS-00428: an INTO clause is expected in this SELECT statement
如何在 PHP 中运行填充临时表的存储过程,然后从中进行选择?
它可以在 SQL Developer 中运行,但不能在 PHP 中运行。
使用:
PHP 8.1.4 Oracle 19.0.0.0.0
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号