oracle - 简单的 ODPI-C 语句执行示例给出 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*); 使用 dpiErrorInfo 返回上下文的最后一个错误。
我希望你能帮助我。
PS 该网站不允许我创建新标签 ODPI-C
编辑:我检查了有关架构名称和上下文/连接存在的所有内容
解决方案
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 错误。
推荐阅读
- python - 无法获取元素的大小和硒中的类
- python - 如何防止用户两次提交相同的表单
- react-native - 如何在 React Native 中的谷歌地图上绘制曲线折线?
- python - 使用多处理池在衍生进程中更改主进程中的全局变量
- palantir-foundry - 是否可以将代码工作簿恢复到以前的版本?
- c++ - Boost 日志在 W10 上工作但不在 ubuntu 中 - 分段错误
- dc.js - 计算不包括重复的记录
- rancher - 如何在 Rancher Web UI 中使用自定义 SSL 证书?
- python - 将几个 .c cython 模块构建到一个 .exe 中
- php - 这个 API 存储库是有效的还是应该拆分为服务?