ORA-00947:在Oracle中创建对象时没有足够的值

时间:2016-10-17 12:04:20

标签: c++ oracle oracle11g occi

我在Oracle中创建了一个新的TYPE,以便在我的表和本地c ++对象之间建立奇偶校验(我正在使用CCI的OCCI接口)。

在我使用的代码中

void insertRowInTable ()
  {

    string sqlStmt = "INSERT INTO MY_TABLE_T VALUES (:x)";

    try{
    stmt = con->createStatement (sqlStmt);
    ObjectDefinition *o = new ObjectDefinition ();

    o->setA(0);
    o->setB(1);
    o->setC(2);
    stmt->setObject (1, o);
    stmt->executeUpdate ();
    cout << "Insert - Success" << endl;
    delete (o);
    }catch(SQLException ex)
    {
       //exception code
    }

代码编译,连接到db但引发以下异常

  

insertRow抛出异常错误号:947 ORA-00947:不够   值

我是否有问题&#34; sqlStmt&#34;?语法或绑定有问题吗?

当然我已经设置了环境和连接

 env = Environment::createEnvironment (Environment::OBJECT);
    occiobjm (env);
    con = env->createConnection (user, passwd, db);

1 个答案:

答案 0 :(得分:0)

表格中有多少列?错误消息表明您没有在insert语句中提供足够的值。如果只提供VALUES子句,则必须提供表中的所有列。否则,您需要列出您为以下内容提供值的每个列:

string sqlStmt = "INSERT INTO MY_TABLE_T (x_col) VALUES (:x)";

编辑: VALUES子句列出了占位符参数。我认为您需要为每个传递的值列出一个,例如:

string sqlStmt = "INSERT INTO MY_TABLE_T (GAME_ID, VERSION) VALUES (:x1,:x2)"

在Oracle OCCI文档中查看occidml.cpp作为示例。