编辑
已解决的问题:我在某些时候错误地删除了我的 PL/SQL 过程中的一行,启用 DBMS 输出,因此它无法向 PHP 发送任何内容。在 SQL 开发人员中测试它时,我必须连接到我的网络并且我用来启用 DBMS 输出的代码,所以这就是它在 SQL_Developer 中而不是在 PHP 中工作的原因。
我现在觉得很傻,错误地归结为删除了一行代码。
如果有人有类似的情况,我会在下面留下查询
把我的头撞在桌子上试图弄清楚为什么这不起作用。
这是使用 PHP 连接到 Oracle 数据库,在 SQL_Developer 中创建代码。
我创建了一个 PL/SQL 过程,它将两个整数作为开始和结束节点并输出一些方向,这在 SQL_Developer 和 PHP 中工作得很好。我的 PHP 中的 select 语句就是这个并返回了我需要的内容。
$get_instruc = "Select * FROM TABLE(Navi_Instructions.Get_Navi_Instructions(:start_node,:end_node))";
(使用 oci_bind_by_name 绑定整数)。
我现在要求整数是字符串,所以我重写了 PL/SQL 过程来适应这种情况。我的新程序运行良好,当我在 SQL_Developer 中使用以下 select 语句时,它会检索正确的数据
Select * FROM TABLE(Navi_Instructions_Final.Get_Navi_Instructions_Final('Room_101','Room_120'));
我的下一步是简单地将这个 select 语句放入 PHP,但是 PHP select 语句拒绝返回任何值。我刚回来“选择了0行”。
$get_instruc = "Select * FROM TABLE(Navi_Instructions_Final.Get_Navi_Instructions_Final(:start_node_final,:end_node_final))";
(使用 oci_bind_by_name 绑定字符串)。
我真的不明白它是如何不工作的,select 语句在 SQL_Developer 中工作,所以它不是 PL/SQL 过程或语句。这些值最初有空格,我用下划线代替了,但没有帮助。我在字符串周围使用了“”和“”。我尝试删除绑定并仅使用纯字符串,例如
$get_instruc = "Select * FROM TABLE(Navi_Instructions_Final.Get_Navi_Instructions_Final('Room_101','Room_120'))"
我是否缺少一些基本的东西,比如 Oracle 无法通过 PHP 接收字符串/varchars?任何帮助将不胜感激。