Php oci_fetch_all()中的数字无效

Php oci_fetch_all()中的数字无效,php,sql,oracle-call-interface,Php,Sql,Oracle Call Interface,因此,我需要使用php通过一个过程从数据库中提取一些信息。 我的代码中有个问题,我无法解决 我有以下程序: CREATE OR REPLACE PROCEDURE example( input IN varchar2, p1 OUT SYS_REFCURSOR) AS BEGIN OPEN p1 FOR SELECT title FROM book WHERE gen LIKE '_' + input

因此,我需要使用php通过一个过程从数据库中提取一些信息。 我的代码中有个问题,我无法解决

我有以下程序:

    CREATE OR REPLACE PROCEDURE example(
    input IN varchar2, 
    p1 OUT SYS_REFCURSOR)
    AS
     BEGIN
      OPEN p1 FOR
      SELECT title
      FROM book 
      WHERE gen LIKE '_' + input + '%'
     ORDER BY gen;
    END;
下面是我的php代码:

$curs = oci_new_cursor($con); 
$stmt = oci_parse($con, "begin example(:input, :data); end;");

$word = 'S';
oci_bind_by_name($stmt, "input", $word);
oci_bind_by_name($stmt, "data", $curs, -1, OCI_B_CURSOR); 

oci_execute($stmt); 
oci_execute($curs);

$nr_rows = oci_fetch_all($curs, $data, null, null, OCI_FETCHSTATEMENT_BY_COLUMN);
我认为代码写得很好,但由于一些奇怪的原因,我得到了这个错误

警告:oci_fetch_all:ORA-01722:C中的数字无效:

我已尝试在过程中使用强制转换,但仍然出现错误

我要查找的选择如下所示:

     SELECT title
      FROM book 
      WHERE gen LIKE '_S%'
     ORDER BY gen;

有什么想法吗?

所以我做了更多的研究,发现WHERE-gen-LIKE''+input+'%'语句无效,所以我将代码改为:

CREATE OR REPLACE PROCEDURE example(
input IN varchar2, 
p1 OUT SYS_REFCURSOR)
AS
 BEGIN
  OPEN p1 FOR
  SELECT title
  FROM book 
  WHERE gen LIKE input
 ORDER BY gen;
END;

我将php代码编辑为$word='S%',进一步,我创建了一个POST方法并编写了$word=.$\u POST[word].%'

我想在这里补充一点,在甲骨文下

'_' + input + '%'
将被解释为数字加法

我认为它所抱怨的问题可以通过以下方式解决:

'_' || input || '%'
因为| |运算符是字符串串联


您是否有可能来自SQL Server背景,其中前者适用于添加字符串?

我不知道这是否可行,我已经发表了一篇评论,并解释了我顺利解决问题的方法。我需要找到该项目,以验证,我会搜索它和答案。