ORA-00947: 在 Oracle 中创建对象时没有足够的值
ORA-00947: not enough values when creating object in Oracle
我在 Oracle 中创建了一个新的 TYPE,以便在我的 table 和本地 C++ 对象(我正在使用 C++ 的 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
}
代码编译,连接到数据库但抛出以下异常
Exception thrown for insertRow Error number: 947 ORA-00947: not enough
values
我有问题吗"sqlStmt"?语法或绑定有问题吗?
当然我已经设置了环境和连接
env = Environment::createEnvironment (Environment::OBJECT);
occiobjm (env);
con = env->createConnection (user, passwd, db);
table 中有多少列?错误消息表明您没有在插入语句中提供足够的值。如果您只提供 VALUES 子句,则必须提供 table 中的所有列。否则,您需要列出您为其提供值的每一列:
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 作为示例。
我在 Oracle 中创建了一个新的 TYPE,以便在我的 table 和本地 C++ 对象(我正在使用 C++ 的 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
}
代码编译,连接到数据库但抛出以下异常
Exception thrown for insertRow Error number: 947 ORA-00947: not enough values
我有问题吗"sqlStmt"?语法或绑定有问题吗?
当然我已经设置了环境和连接
env = Environment::createEnvironment (Environment::OBJECT);
occiobjm (env);
con = env->createConnection (user, passwd, db);
table 中有多少列?错误消息表明您没有在插入语句中提供足够的值。如果您只提供 VALUES 子句,则必须提供 table 中的所有列。否则,您需要列出您为其提供值的每一列:
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 作为示例。