ORA-00947: Oracle创建对象时没有足够的值
ORA-00947: not enough values when creating object in Oracle
我在Oracle中创建了一个新的TYPE,以便在我的表和本地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
}
代码编译,连接到db,但抛出以下异常
抛出insertRow错误号:947 ORA-00947: not enough值
我有一个有问题的"sqlStmt"吗?语法或绑定有问题吗?
当然我已经设置了环境和连接
env = Environment::createEnvironment (Environment::OBJECT);
occiobjm (env);
con = env->createConnection (user, passwd, db);
表中有多少列?错误消息表明您没有在插入语句中提供足够的值。如果只提供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。
相关文章:
- 使用基类指针创建对象时,缺少派生类析构函数
- 如何创建对象函数指针C++映射?
- C++创建对象数组
- 在 C++ 的 Switch Case 中创建对象后对对象调用方法
- 如何获取在 main() 函数中构造的类的创建对象?
- 基于文件中的条目创建对象
- 错误:创建对象后无法分配区域
- C++ 通过输入创建对象
- 堆还是堆栈用于创建对象?
- 使用 C++ 创建对象数组
- 使用unique_ptr创建对象
- C++递归地在类构造函数中创建对象
- 通过向构造函数其他对象引用页面来创建对象
- ReactiveX (rx) - 在对象上应用可观察对象,而不是在可观察对象中创建对象
- 如何在OSX上正确创建C++对象文件(.o)
- 编译器是否会创建vtable,而不考虑在c++中创建对象
- 创建对象并防止被破坏
- 在C++中,友元类可以从友元类创建对象吗
- 只在堆中创建C++对象
- ORA-00947: Oracle创建对象时没有足够的值