Zend与oracle序列

Zend与oracle序列,oracle,zend-framework,pdo,zend-db,ora-01722,Oracle,Zend Framework,Pdo,Zend Db,Ora 01722,我正在尝试向Oracle插入一条新语句。我的目标是创建干净的sql查询 我有一个包含ID、用户名和密码的表。 我有以下代码 $sql = 'insert INTO EMPLOYEES (ID, LOGIN, PASSWORD) VALUES (:seq, :login, :pass)'; $stmt = new Zend_Db_Statement_Pdo_Oci(Zend_Registry::get('db'), $sql); $stmt->execute(array(':seq' =&

我正在尝试向Oracle插入一条新语句。我的目标是创建干净的sql查询

我有一个包含ID、用户名和密码的表。 我有以下代码

$sql = 'insert INTO EMPLOYEES (ID, LOGIN, PASSWORD) VALUES (:seq,  :login, :pass)';
$stmt = new Zend_Db_Statement_Pdo_Oci(Zend_Registry::get('db'), $sql);
$stmt->execute(array(':seq' => new Zend_Db_Expr('RK.EMP_SEQUENCE.NEXTVAL'),':login' => 'sss', ':pass' => 's'));
(注册表存储oci_pdo适配器)

但它给了我:

消息:SQLSTATE[HY000]:常规 错误:1722 OCISMTEXECUTE:ORA-01722: 无效号码 (ext\pdo_oci\oci_statement.c:146)

我不知道会发生什么,因为谷歌根本没有任何信息=(
有什么建议吗?

这样做怎么样:

$sql = 'insert INTO EMPLOYEES (ID, LOGIN, PASSWORD) VALUES (RK.EMP_SEQUENCE.NEXTVAL,  :login, :pass)';

现在只需绑定登录名和密码并执行即可。

您可以通知Zend您的序列名称:

<?php
class A extends Zend_Db_Table_Abstract
{
    protected $_sequence = 'RK.EMP_SEQUENCE';
    ....