2

我正在尝试通过我的 CPP 程序中的 OCCI 调用执行 SQL 查询。我想从一列名称中读取两列,中间有一个空格。我尝试将列名括在,和之间' ',但没有任何帮助。专家可以建议我回答这个问题。" "[ ]

以下是我的代码: ....

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: invalid number

PS:ORACLE 表有很多列,其中“REJECTED COST”列标题用空格命名。不过,我无权要求数据库团队更改数据库表名。

提前致谢。

4

1 回答 1

2

单引号 ( ') 表示字符文字。即,您正在选择 string 'REJECTED COST',显然不能将其转换为数字。为了选择带有空格的列名,您应该使用双引号 ( ")。请注意,它们需要被转义,因为您在 c++ 字符串中使用它们,这也用双引号表示:

string sqlStmt = "SELECT \"REJECTED COST\", APPROVED_COST FROM COST_TABLE where PART_NUM= 'PN4879-1'";
于 2014-10-20T05:45:03.543 回答