2011-06-07 16 views
0

私はprocを初めて使用しており、私はC++で使用しています。PRO * CおよびC++でのデータ型の競合

データベースに接続できます。 しかし、その後、私はクエリを発射しようとするとエラーが出ます。

CODE:

EXEC SQL BEGIN DECLARE SECTION; 
    string custName=cusName; 
    long int custID=cusID; 
    EXEC SQL END DECLARE SECTION; 

    EXEC SQL insert into tbl_customer5 values(:custID,:custName) 

ERROR:

Syntax error at line 42, column 4, file Customer.pc: 
    Error at line 42, column 4 in file Customer.pc 
     string custName=cusName; 
    ...1 
    PCC-S-02201, Encountered the symbol "string" when expecting one of the following 

: 

    auto, char, const, double, enum, extern, float, int, long, 
    ulong_varchar, OCIBFileLocator OCIBlobLocator, 
    OCIClobLocator, OCIDateTime, OCIExtProcContext, OCIInterval, 
    OCIRowid, OCIDate, OCINumber, OCIRaw, OCIString, register, 
    short, signed, sql_context, sql_cursor, static, struct, 
    typedef, union, unsigned, utext, uvarchar, varchar, void, 
    volatile, a typedef name, a precompiled header, exec oracle, 
    exec oracle begin, exec, exec sql, exec sql begin, 
    exec sql end, exec sql type, exec sql var, exec sql include, 
The symbol "enum," was substituted for "string" to continue. 

どのようにこのエラーを解決する方法を教えてください。 この場合、データ等価を使用できますか?

+0

なぜC++を使用するときにProCではなくOCCIを使用しますか? – nabulke

+0

@nabulke:OCCIを最後に使用した場所、私はそれを気に入っていましたが、バイナリでしか利用できず、一部のコンパイラでのみ利用可能でした。たとえば、旧式の非標準STLを使用したSun C++でのみ使用可能でした。 –

答えて

1

エラーが示すように、「文字列」記号は存在しません。代わりにvarcharを使用してみてください。

+0

varcharはC++で定義されていません どうすればvarcharを使用できますか データ同値性の概念を適用する必要があります – sambhav

+0

PRO * Cはvarcharを処理しませんCプリプロセッサ実行後、有効なコードがCコンパイラ –

-1

私が知っている限り、Pro * Cはその名前がC言語のものであることを示しています。したがって、std :: stringなどのC++クラスは使用できません。

+0

ok can私はchar *でそれを使用しますか? – sambhav

+0

@sambhav Pro * Cのマニュアルを読む必要があります。そのコードをCコンパイラに渡すプリプロセッサだと思いますか? –

+0

ええ最近、私はこれを読んでいます これは私の最初のprocプログラムでした 初心者向けのgd本をお薦めします – sambhav

0

文字列が見つかりません。

表の前にstd :: が必要な場合があります。また、プリプロセッサで正しいインクルード・ファイルを見つけるために、Pro * Cの呼び出しにインクルード・パスを追加する必要があります。 他のPro * Cオプションが影響を与える可能性があります。

メイクファイル全体を表示できますか?

関連する問題