我正试图通过OCCI调用在我的CPP程序中执行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团队更改DB表名。
提前致谢。
"REJECTED COST"
,Oracle也是如此。你的代码需要使用:string sqlStmt = "SELECT \"REJECTED COST\", .... ";
(或者任何C语言字符串内部使用的转义字符)。单引号只能用于SQL语句中的字符串字面量。但是"ORA-01722: invalid number"的原因是你当前的语句为该列返回了一个字符串'..'
。 - user330315