0

我的MERGE INTO语句使用 SQL Developer 在 SQL 中工作:

MERGE INTO EMAIL_LIST d USING (SELECT 'stackoverflowuser95@gmail.com' EMAIL FROM DUAL) s ON (d.EMAIL = s.EMAIL) WHEN NOT MATCHED THEN INSERT (EMAIL) VALUES (s.EMAIL);

但是在 PHP 中尝试时不起作用:

$update_or_insert_list = oci_parse($conn,
                                   "MERGE INTO EMAIL_LIST d USING (SELECT :email EMAIL FROM DUAL) s ON (d.EMAIL = s.EMAIL) WHEN NOT MATCHED THEN INSERT (EMAIL) VALUES (s.EMAIL);"
); // Also tried with ':email' and/or with ; inside the SQL statement

oci_bind_by_name($update_or_insert_list, ':email', $email);

oci_execute($update_or_insert_list);

这是表格:

CREATE TABLE EMAIL_LIST ( 
    EMAIL VARCHAR2 (100)  NOT NULL
);
ALTER TABLE EMAIL_LIST
    ADD CONSTRAINT PK_EMAIL_LIST PRIMARY KEY ( EMAIL ) ;

-- And yes, this is a test-case!

如何让 MERGE INTO 在 PHP 中工作?

4

1 回答 1

3

这不是MERGE错误,请删除查询中的结尾;

最后的分号不是 SQL 的一部分。它用于各种客户端界面(SQL*Plus、SQL Developer...)以指示 SQL 语句的结束。在 PHP 中,每个请求都是一条 SQL 语句,因此分号不是必需的。

于 2012-11-07T09:12:45.950 回答