所以,我需要使用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;
有什么想法吗?
答案 0 :(得分:0)
所以我做了一些研究,发现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 =''。$ _ POST [word]。'% “;
答案 1 :(得分:0)
只是在这里添加一个注释,我想在Oracle
下'_' + input + '%'
将被解释为数字加法。
我认为抱怨的内容将通过以下方式解决:
'_' || input || '%'
作为|| operator是字符串连接。
您是否有机会来自SQL Server后台,前者对于追加字符串是正确的?