如果在 oracle 函数中,为什么 oci_bind_by_name 不起作用

杰基·苏皮特

对不起,我的英语不好。我认为如果我把我的代码放在这里会更容易。所以这是我尝试过的:

//这是工作

$sql = "select ID, NAME, BDATE from EMPLOYEES where BDATE >= DATE '2020-01-01'"; 

//但是当我尝试这样做时,它失败了:

$sql = "select ID, NAME, BDATE from EMPLOYEES where BDATE >= DATE :bdate"; //this is 
$compiled = oci_parse($conn, $sql);
oci_bind_by_name($compiled, ":bdate", "2020-01-01");

以上将引发此错误:

"code":936,"message":"ORA-00936: 缺少表达式"

我尝试过其他类似的东西:

//失败

$sql = "select ID, NAME, BDATE from EMPLOYEES where BDATE >= TO_DATE(:bdate, 'YYYY-MM-DD')"; 
oci_bind_by_name($conn, ':bdate', '2020-01-01');

以上将引发此错误:

"code":1847,"message":"ORA-01847: 月份的日期必须介于 1 和月份的最后一天之间"

//当我把 DATE、TO_DATE、UPPER 等函数放入内部时总是失败

$sql = "select ID, NAME, BDATE, STATUS from EMPLOYEES where upper(STATUS) = upper(:status)"; 

//In 子句中的事件也会失败

$sql = "select ID, NAME, BDATE, STATUS from EMPLOYEES where upper(STATUS) in (:status1, :status2)"; 
oci_bind_by_name($compiled, ":status1", "SINGLE");
oci_bind_by_name($compiled, ":status2", "MARRIED");

谁能告诉我如何解决这个问题?我遵循了文档中的许多教程,以及另一个 stackoverflow 的答案。但没有任何作用。

或者是不是我错过了在我的网络服务器上设置的东西?还是在我的数据库服务器上?

仅供参考,我使用的是 PHP7.2、OCI8、Oracle 11g。

非常感谢你。

用户9950041

这在 php 7.4、Oci8/Oracle 19c 数据库上对我有用。(我从来没有在 php 上工作过,只是在这里和那里搜索了一下)

    $sql = "SELECT ename FROM emp WHERE hiredate > TO_DATE(:hdate,'YYYY-MM-DD')";
    $stid = oci_parse($conn, $sql);
    $hdate = "1980-01-01";
     oci_bind_by_name($stid,':hdate', $hdate);
   // oci_bind_by_name($stid,":hdate", $hdate);  //this line also works i.e double quotes

编辑:- IN 子句也适用于我。这是我学到的,你不能在 OCI_BIND 中传递文字值,我首先将文字分配给一个变量

$sql = "SELECT ename FROM emp WHERE job IN (:job1,:job2)";
$stid = oci_parse($conn, $sql);
$job1 ='CLERK';
$job2 = 'SALESMAN';
oci_bind_by_name($stid,':job1', $job1);
oci_bind_by_name($stid,':job2',$job2);
oci_execute($stid);

检查这些link1 link2以获取适用于 Oracle 数据库的示例

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果在三元运算符中使用局部变量,为什么从int到short的缩小转换不起作用

如果在IPython中__name__ =='__main__'

如果在等式左侧加上括号时,如果条件不起作用,为什么会这样呢?

如果在本地声明变量,为什么动画不起作用?

如果在python 3.7中多次运行,该函数将不再起作用

如果在PrimeFaces中的ui:composition模板中调用,轮询方法侦听器将不起作用?

如果在单词后添加标点符号,为什么equals()方法不起作用?

如果在jQuery中检查prop(“ disabled”)的if语句不起作用

如果在WebChromeClient#onCreateWindow的回调中创建了Webview,则Android WebView addJavascriptInterface将不起作用

如果在CSHTML中不起作用,则为多个(如果不是)

如果在List或Map中对数组进行注释,则Java 8 TYPE_USE注释将不起作用

如果在Java中 如果在C ++中

如果在更新查询中不起作用

如果在xlst上不起作用

如果在SELECT中不起作用

django模板-如果在block中,运算符不起作用

为什么pi()函数在使用其JDBC驱动程序的Oracle中不起作用?

如果在类型转换后语句不起作用

如果在 css 中定义了 maxHeight,则 object.style.maxHeight 不起作用

嵌套如果在 python 中不起作用并且数学模块有问题

TYPO3 - 复杂的流体条件 f:如果在 8.7 中不起作用

如果在添加它的范围之外创建,为什么添加 barBarttonItem 将不起作用?

如果在 react-native 0.59 中未定义其初始值,则 Mobx @observable 不起作用

strcmp 里面如果在函数内部不起作用

如果在模式中指定了这种猫鼬方法,为什么它不起作用?

如果在功能中也修改了狀態,則去抖不起作用

如果在 Oracle 中不存在

如果在 Where NOT IN 中传递变量,则查询 laravel 不起作用

为什么 nvl 在 oracle 的 concat 函数中不起作用?