2

CPP プログラムで OCCI 呼び出しを介して SQL クエリを実行しようとしています。1つの列名の間にスペースがある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 テーブル名の変更を依頼する権限はありません。

前もって感謝します。

4

1 に答える 1

2

一重引用符 ( ') は、文字リテラルを示します。'REJECTED COST'つまり、明らかに数値にキャストできないstring を選択しています。スペースを含む列名を選択するには、二重引用符 ( ") を使用する必要があります。二重引用符で示される c++ 文字列内で使用しているため、エスケープする必要があることに注意してください。

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