1

编辑

已解决的问题:我在某些时候错误地删除了我的 PL/SQL 过程中的一行,启用 DBMS 输出,因此它无法向 PHP 发送任何内容。在 SQL 开发人员中测试它时,我必须连接到我的网络并且我用来启用 D​​BMS 输出的代码,所以这就是它在 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?任何帮助将不胜感激。

4

0 回答 0