C++的程序,oracle 当字段为 “null"时,Fetch into 到变量后,变量是空字符串还是NULL?
时间: 2024-03-03 15:52:08 浏览: 52
在使用 C++ 语言通过 Oracle 数据库访问查询结果集时,如果 fetch into 命令从查询结果中取出的值为 null,那么对应的变量值就会被赋为 null 而不是空字符串。
例如,假设通过 Oracle 数据库连接对象 conn,已经创建了一个查询语句对象 stmt,查询结果集中包含一个名为 "name" 的字段,值为 null,那么以下代码执行后,变量 my_name 的值就会被赋为 null:
```c++
OCIStmt* stmt;
OCIDefine *defnp;
char my_name[50];
int my_name_ind = 0;
OCIStmtPrepare(stmt, conn, (OraText *) "SELECT name FROM my_table WHERE id = 1", (ub4) strlen("SELECT name FROM my_table WHERE id = 1"), OCI_NTV_SYNTAX, OCI_DEFAULT);
OCIDefineByPos(stmt, &defnp, errhp, (ub4) 1, (dvoid *) my_name, (sb4) sizeof(my_name), SQLT_STR, (dvoid *) &my_name_ind, (ub2 *) 0, (ub2 *) 0, OCI_DEFAULT);
OCIStmtExecute(svchp, stmt, errhp, (ub4) 1, (ub4) 0, (OCISnapshot *) NULL, (OCISnapshot *) NULL, OCI_DEFAULT);
if (my_name_ind == -1) {
// my_name 的值为 null
}
```
在这个例子中,my_name_ind 是一个用来存储 my_name 变量是否为 null 的指示器变量。如果 my_name 的值为 null,则 my_name_ind 的值为 -1,否则 my_name_ind 的值为 0。
阅读全文