我试图使用ODPI-C执行简单的sql查询
dpiStmt* stmt;
const char* query = "CREATE TABLE schema_name.Z_TEST(\n"
" person_id NUMBER NOT NULL,\n"
" first_name VARCHAR2(50) NOT NULL,\n"
" last_name VARCHAR2(50) NOT NULL,\n"
" PRIMARY KEY(person_id)\n"
");";
dpiConn_prepareStmt(conn.connection_, 0, query, strlen(query), nullptr,0, &stmt);
if(dpiStmt_execute(stmt, DPI_MODE_EXEC_DEFAULT, nullptr) == DPI_FAILURE)
{
throw std::runtime_error(get_context_error_string(conn.db_context_));
}但它产生了一个错误
ERROR: ORA-00922: missing or invalid option (dpiStmt_execute : execute)哪里
进行测试,返回最后的上下文错误)。
我希望你能帮助我。
这个网站不允许我创建新的标签ODPI-C
编辑:我检查了所有关于模式名称和上下文/连接是否存在的内容
发布于 2020-03-27 16:02:17
DDL语句的末尾不应该有分号。这是一个客户端语句分隔符,而不是语句的一部分。改为:
const char* query = "CREATE TABLE schema_name.Z_TEST(\n"
" person_id NUMBER NOT NULL,\n"
" first_name VARCHAR2(50) NOT NULL,\n"
" last_name VARCHAR2(50) NOT NULL,\n"
" PRIMARY KEY(person_id)\n"
")";在某些情况下,偏离分号会导致ORA-00911错误,而不是ORA-00922错误。
https://stackoverflow.com/questions/60889510
复制相似问题