プロが教えるわが家の防犯対策術!

Pro*cの質問です。

CONNECTは成功したのですが、カーソルのオープンでエラーになります。
(ORA-01012:ログオンされていません。)

環境に問題があると考え、いろいろと調べているのですが、全く解りません。
自分側か、DB側の問題なのかどうかも、判断できていない状況です。

非常に困っております。どなたか御存知の方、御教授ください。

以下が動作環境になります。

WIN版:
Windows2000,VC,Pro*C(8i),Net8,マルチスレッド

UNIX版:
Solaris8:ForteC,Pro*C(9i),Net8,64Bit,マルチスレッド

以上、情報が不足しているかも知れませんが、宜しくお願い致します。

A 回答 (2件)

こんにちわ。



#1 のmuyoshid です。
AT 句を指定してCONNECT 文を実行しているにも関わらず、
カーソル宣言でAT 句が指定されていないのが原因では
ないでしょうか?
AT 句の詳細については、
「Oracle8i Pro*C/C++ プリコンパイラ・プログラマーズ・ガイド」
にて確認してみて下さい。

ユーザ登録が必要 (無料) ですが、OTN Japan でPDF 形式の
マニュアルをDownload する事ができます。

参考URL:http://technet.oracle.co.jp/
    • good
    • 0
この回答へのお礼

御指摘ありがとうございます。

現在、AT句なしでテストしています。(必要ない事が分かった為)
>EXEC SQL CONNECT :UserName IDENTIFIED BY :Password USING :DbString;

ちょっと頭が煮詰ってるので、クールダウン(散歩)してから作業し、追って結果を報告致します。

都合の良い時にまた、覗いてみてください。

それでは。

お礼日時:2002/12/08 23:41

こんにちわ。



2点程確認させて下さい。
 1) この現象は、Windows版, UNIX版の両方で発生するのでしょうか?
 2) DB に発行しているSQL文 (CONNECT 文も含めて) を
   教えて下さい。

この回答への補足

1)この現象は、Windows版, UNIX版の両方で発生しています。
2)以下がSQL文です。

intdb_logon(char* DbString)
{
charUserName[16]= USERNAME;
charPassword[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);
}
intdb_cursordef()
{
EXEC SQL WHENEVER SQLERROR GOTO sql_err;
EXEC SQL DECLARE cursor CURSOR FOR
SELECT A FROM TBL;

return( 0 );
sql_err:
return(-1);
}
intdb_cursoropen()
{
EXEC SQL WHENEVER SQLERROR GOTO sql_err;
EXEC SQL OPEN cursor;

return( 0 );
sql_err:
return( -1 );
}

---------------------- 以上画SQL文です。

補足日時:2002/12/08 22:19
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています