- ベストアンサー
カーソルオープンでエラー(ORA-01012)
- CONNECTは成功したが、カーソルのオープンでエラーが発生しています。
- 環境に問題があるかどうかを調査中ですが、解決策が見つかっていません。
- 困っているので、詳しい方に助けを求めています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちわ。 #1 のmuyoshid です。 AT 句を指定してCONNECT 文を実行しているにも関わらず、 カーソル宣言でAT 句が指定されていないのが原因では ないでしょうか? AT 句の詳細については、 「Oracle8i Pro*C/C++ プリコンパイラ・プログラマーズ・ガイド」 にて確認してみて下さい。 ユーザ登録が必要 (無料) ですが、OTN Japan でPDF 形式の マニュアルをDownload する事ができます。
- 参考URL:
- http://technet.oracle.co.jp/
その他の回答 (1)
- muyoshid
- ベストアンサー率72% (230/318)
こんにちわ。 2点程確認させて下さい。 1) この現象は、Windows版, UNIX版の両方で発生するのでしょうか? 2) DB に発行しているSQL文 (CONNECT 文も含めて) を 教えて下さい。
補足
1)この現象は、Windows版, UNIX版の両方で発生しています。 2)以下がSQL文です。 int db_logon(char* DbString) { char UserName[16] = USERNAME; char Password[16] = PASSWORD; strcpy((char*)UserName.arr, UserName); strcpy((char*)Password.arr, Password); strcpy((char*)DbString.arr, DbString); UserName.len = strlen((char*)UserName.arr); Password.len = strlen((char*)Password.arr); DbString.len = strlen((char*)DbString.arr); EXEC SQL WHENEVER SQLERROR GOTO sql_err; EXEC SQL DECLARE DB_NAME DATABASE; EXEC SQL CONNECT :UserName IDENTIFIED BY :Password AT DB_NAME USING :DbString; return(0); sql_err: return(-1); } int db_cursordef() { EXEC SQL WHENEVER SQLERROR GOTO sql_err; EXEC SQL DECLARE cursor CURSOR FOR SELECT A FROM TBL; return( 0 ); sql_err: return(-1); } int db_cursoropen() { EXEC SQL WHENEVER SQLERROR GOTO sql_err; EXEC SQL OPEN cursor; return( 0 ); sql_err: return( -1 ); } ---------------------- 以上画SQL文です。
お礼
御指摘ありがとうございます。 現在、AT句なしでテストしています。(必要ない事が分かった為) >EXEC SQL CONNECT :UserName IDENTIFIED BY :Password USING :DbString; ちょっと頭が煮詰ってるので、クールダウン(散歩)してから作業し、追って結果を報告致します。 都合の良い時にまた、覗いてみてください。 それでは。