简单的ODPI-C语句执行例子给出ORA-00922
Simple ODPI-C statement execution example gives ORA-00922
我正在尝试使用 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)
在哪里
- conn 是一个具有 dpiConn* connection_ 的结构。(用 dpiConn_ping 测试)
- get_context_error_string(dpiContext*); returns上下文的最后一个错误,使用 dpiErrorInfo。
希望你能帮帮我。
P.S。该网站不允许我创建新标签 ODPI-C
编辑:
我检查了关于架构名称和 context/connection 存在的所有内容
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 错误。
我正在尝试使用 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)
在哪里
- conn 是一个具有 dpiConn* connection_ 的结构。(用 dpiConn_ping 测试)
- get_context_error_string(dpiContext*); returns上下文的最后一个错误,使用 dpiErrorInfo。
希望你能帮帮我。
P.S。该网站不允许我创建新标签 ODPI-C
编辑: 我检查了关于架构名称和 context/connection 存在的所有内容
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 错误。