我正在尝试通过我的CPP程序中的OCCI调用执行SQL查询。
我想读取那两列中的2列,其间有一个空格。我尝试将列名称括在' '
," "
,[ ]
之间,没有任何帮助。专家建议我回答这个问题。
以下是我的代码: ....
string sqlStmt = "SELECT 'REJECTED COST', APPROVED_COST FROM COST_TABLE where PART_NUM= 'PN4879-1'";
stmt = conn->createStatement(sqlStmt);
ResultSet *rset = stmt->executeQuery();
double dRejCost = 0;
double dAppCost = 0;
if(rset->next())
{
dRejCost = rset->getNumber(1);
dAppCost = rset->getNumber(2);
}
stmt->closeResultSet(rset);
conn->terminateStatement(stmt);
错误/例外:
我得到的错误@ dRejCost = rset-> getNumber(1);:
ORA-01722:无效数字
PS:ORACLE表有许多列,其中“REJECTED COST”列标题以空格命名。我没有权限要求DB团队更改数据库表名。
提前致谢。
答案 0 :(得分:2)
单引号('
)表示字符文字。即,您正在选择字符串'REJECTED COST'
,显然,它不能转换为数字。
要选择带空格的列名,您应该使用双引号("
)。请注意,它们需要进行转义,因为您在c ++字符串中使用它们,这也用双引号表示:
string sqlStmt = "SELECT \"REJECTED COST\", APPROVED_COST FROM COST_TABLE where PART_NUM= 'PN4879-1'";