VB6.0で開発したアプリ内でPro*Cプログラムを
Shell関数でCALLしてOracle8iデータベース環境に
接続しようとしていますが、Pro*Cプログラム内の
CONNECT命令で"ORA-6413 接続がオープンしていません。"が返され、接続できません。
(Pro*Cコンパイル時のNetのバージョンもマシン環境と合わせてあります)
どなたか解決策お持ちの方、教えて頂けないでしょうか。よろしくお願いします。
なお、この処理は以前は全く問題なく動いていたのですが、
突然接続エラーが出るようになってしまいました。

※コーディングは下記のようにしています。
(VB)
変数1 = Shell(PRO*C.exe 接続情報(id/ps@Host) 引数2 引数3 引数4 引数5 引数6 引数7)

(Pro*C ちょっと見にくいですが。。)
int DBConnect( 接続情報 )
    char *接続情報 ;
{
strcpy( (char *)変数.arr, 接続情報 ) ;
変数.len = strlen( (char *)変数.arr ) ;
EXEC SQL CONNECT :変数 ;
return(0) ;
sqlerr:
warning:
Err_Print( sqlca.sqlerrm.sqlerrmc ) ; ←Connectでエラーとなりここに飛んでます。Err_Print内でテキストにエラーメッセージを吐いてます
return(-1) ;
}

このQ&Aに関連する最新のQ&A

A 回答 (5件)

先ほど同様の問題が発生し、


検索してここにたどり着きました。
(前は動いていたのに動かなくなった)

原因はEXE名にカッコが入っていたからでした。
→EXE名を変えると動作しました。

EXE名もoracleに送信されるので
使ってはマズイ文字が入ったEXE名だと
接続できなくなるからです。
    • good
    • 0

>ちなみに他のPCではありませんが、他のPro*Cexeは同じ接続文字列で接続できて動いてます。



じゃぁ、一番先に思いつくのは動かないPro*Cのexeが悪いってことですよね。

他に何が考えられますか?
exeの引数の処理の仕方が間違ってるだけのような気もしますけど。
    • good
    • 0

>しかし、DOS窓上でVBコーディングと同じようにPro*C.exeを起動すると


>VBから実行したのと同じ結果となってしまいます。
>(つまり、VBからの引数のid/pass@HOSTでPro*C内でCONNECT命令を発行すると接続できないということです)


もうひとつ確認ポイントを挙げていたんですけど。

>・他のPCでPro*Cのexeをコマンドプロンプトから起動して動作するか?

この回答への補足

現在、すぐには他のPCが準備できないので問題のEXEを他PCで試すことができません。
ちなみに他のPCではありませんが、他のPro*Cexeは同じ接続文字列で接続できて動いてます。

補足日時:2005/04/25 15:05
    • good
    • 0

この部分が気になりますが、SQL Plusでは接続できますか?



>なお、この処理は以前は全く問題なく動いていたのですが、
>突然接続エラーが出るようになってしまいました。

この回答への補足

補足が遅くなり申し訳ありません。
SQL PlusではVBコーディング内のid/passで接続できます。
しかし、DOS窓上でVBコーディングと同じようにPro*C.exeを起動するとVBから実行したのと同じ結果となってしまいます。(つまり、VBからの引数のid/pass@HOSTでPro*C内でCONNECT命令を発行すると接続できないということです)
引き続きのフォロー、お願いします。

補足日時:2005/04/25 10:26
    • good
    • 0

まず、問題の切り分けが必要。



・Pro*Cのexeをコマンドプロンプトから起動して動作するか?(同じPC上で)

するんでしたらVBからの呼び方が悪いってことに。
しないんだったら、

・他のPCでPro*Cのexeをコマンドプロンプトから起動して動作するか?

これで切り分けはできるんじゃないですか?
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

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

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qオープンキャンパスの日程

オープンキャンパスの日程が、日にちごと(四月、五月…といったように)に載っている本またはサイトなどをご存知でしたら教えてほしいです。

Aベストアンサー

ここはどうでしょうか?

参考URL:http://www.edunavi.net/op/index.html

Qpro*c で pl/sql に変数を渡すとora-01458発生

oracle初心者です。よろしくお願いします。

oracleのバージョンは 10.1.0.2.0
開発言語はpro*c pl/sql です。

テキストファイルを処理するAPを作成しています。
ディレクトリオブジェクト名を、pro*cからpl/sqlを呼び出す際に変数として渡していますが、実行するとora-01458エラーが発生してしまいます。
pro*cのコーディングは以下の通りです。

EXEC SQL BEGIN DECLARE SECTION;
char Pass[50+1];
char Txtnm[20+1];
int nStatus;
VARCHAR vErrMsg[100+1];
VARCHAR vErrCode[10+1];
EXEC SQL END DECLARE SECTION;

ZeroMemory( Pass, sizeof( Pass ) );
strcpy( Pass, "DIR_A" );
ZeroMemory( Txtnm, sizeof( Txtnm) );
strcpy( Txtnm, "TEST.txt" );

EXEC SQL EXECUTE
BEGIN
 proc9999( :Pass, :Txtnm, :nStatus, :vErrMsg, :vErrCode );
END;
END-EXEC;

しかし、このpl/sqlをsqlplusから下記の内容で実行すると正常に動作します。

DECLARE
in_file_dirVARCHAR2(255):='DIR_A';
in_file_nameVARCHAR2(255):='TEST.txt';
io_stsnumber;
io_msgVARCHAR2(255);
io_msgcdVARCHAR2(10);
BEGIN
PROC9999( in_file_dir, in_file_name, io_sts, io_msg, io_msgcd );
END;

同じことをしていると思うのですが何故pro*cではエラーになるのでしょうか?

oracle初心者です。よろしくお願いします。

oracleのバージョンは 10.1.0.2.0
開発言語はpro*c pl/sql です。

テキストファイルを処理するAPを作成しています。
ディレクトリオブジェクト名を、pro*cからpl/sqlを呼び出す際に変数として渡していますが、実行するとora-01458エラーが発生してしまいます。
pro*cのコーディングは以下の通りです。

EXEC SQL BEGIN DECLARE SECTION;
char Pass[50+1];
char Txtnm[20+1];
int nStatus;
VARCHAR vErrMsg[100+1];
VARCHAR vErrCode[10+1];
EX...続きを読む

Aベストアンサー

>実行するとora-01458エラーが発生してしまいます。

このエラーコードの意味は自分で調べましたか?
「可変長文字列の長さが無効です。」です。

http://otn.oracle.co.jp/document/msg/index.html
#要ユーザ登録(無料)

vErrMsg.lenとか初期化してないですよね。100+1より大きな不正な値が入ってるんじゃないですか?

参考URL:http://otn.oracle.co.jp/document/msg/index.html

Qオープンキャンパスについて

私は私立の新高3です。
埼玉県立大の検査技術科学専攻を第一志望にしていて、推薦も目指しています。
併願校は女子栄養、文京学院です。
高3になると、土曜は午前ずっと学校で、日曜は1日中模試のときがあり、
休暇期間中も講習があるので、行く機会を確保するのが難しいです。
代わりに親に一人で行ってもらうのはおかしいですし…


[併願2つについて]
オープンキャンパスで入試の資料をもらいました。しかし口頭では文書以上のことは説明していませんでした。その後、様々なお知らせが郵送されています。個人の見学や相談も受け付けているようです。
しかしどの方式で受験するか迷っています。センター利用以外もうけるべきですか?…(1)
テスト前のため行かなかったのですが、時間のある高2の時点で文化祭に行くべきだったでしょうか?…(2)
1度行ったことがあるとしても、今年の夏や文化祭に行くべきでしょうか? …(3)


[女子栄養大]
高1の夏に坂戸でのオープンキャンパスに行ったことがあります。
去年10月に一般入試対策講座がありました。高2の時点で行くべきだったでしょうか? … (4)
今度3/24にイベントがあるのですが、春だと募集要項ができていないので、
行かなくても良いでしょうか? …(5)
http://www.eiyo.ac.jp/nyushicenter/opencampus/


[文京学院大]
高1に本郷でのオープンキャンパスへ行ったことがあります。
今度3/24にイベントがあるのですが、「入試の報告」なので、まだ本年度の情報が無さそうなので、行かなくても良いでしょうか? …(6)
http://info.bgu.ac.jp/

[埼玉県立大]
自転車1時間で着きます。
高1と高2にオープンキャンパスへ行きました。
時間のある高2の時点で文化祭に行くべきだったでしょうか?…(7)
1度行ったことがあるとしても、今年の夏や文化祭に行くべきでしょうか? …(8)
個人の見学を受け付けているのかよく分かりません。


[親と]
オープンキャンパスで見た限りでは、親と一緒が5割、友達と一緒がが3割のようでした。
今までは1人で行っていたのですが親の意見も欲しいので、県立大だけでも一緒に行きたいなと思っています。

しかし、親は車いすではありませんが足が悪く、広いスーパーに行くと杖があっても痛くなります。
車で大学に行けると良いのですが、付近に駐車場は無いようです。
駐車場に停めてよいのか大学に聞くのは不安です。
駅からバスがありますが、混んでいると座れないかもしれません。
どうしたらよいでしょうか? …(9)


できればすべてに回答お願いします

私は私立の新高3です。
埼玉県立大の検査技術科学専攻を第一志望にしていて、推薦も目指しています。
併願校は女子栄養、文京学院です。
高3になると、土曜は午前ずっと学校で、日曜は1日中模試のときがあり、
休暇期間中も講習があるので、行く機会を確保するのが難しいです。
代わりに親に一人で行ってもらうのはおかしいですし…


[併願2つについて]
オープンキャンパスで入試の資料をもらいました。しかし口頭では文書以上のことは説明していませんでした。その後、様々なお知らせが郵送されています。個人の...続きを読む

Aベストアンサー

新3年生ですか。いよいよ受験の年ですね。

僕の個人的な意見として参考にしてください。

(1)高額な受験料を払うわけですから、併願とはいえ質問者様が本当に入学したい
  という思いが強ければ受けた方がいいでしょう。

(2)過去のことを考えても仕方ありません。

(3)大学内を直接訪れる機会はそうそうありませんし、行くことによって大学の雰囲気
  が分かります。また、モチベーションも上がりますので、行った方がいいでしょう。

(4)過去のことを考えても仕方ありません。

(5)募集要項はなくとも情報を集めるには大学に直接行くのが一番だと思います。

(6)(5)と重複しますが、大学がオープンキャンパスを開催する目的を考えてみてください。
  受験生をより多く引き付けるためです。当然、入試に関するなんらかの情報があるはず。

(7)過去のことを考えても仕方ありません。

(8)(3)と同じ理由で行った方がいいでしょう。個人というのは誰と行くつもりなのですか?
  個人で行っても差し支えないと思いますが。

(9)大学に事情を説明して許可をもらったらいいと思います。

第一志望に合格できますように。

新3年生ですか。いよいよ受験の年ですね。

僕の個人的な意見として参考にしてください。

(1)高額な受験料を払うわけですから、併願とはいえ質問者様が本当に入学したい
  という思いが強ければ受けた方がいいでしょう。

(2)過去のことを考えても仕方ありません。

(3)大学内を直接訪れる機会はそうそうありませんし、行くことによって大学の雰囲気
  が分かります。また、モチベーションも上がりますので、行った方がいいでしょう。

(4)過去のことを考えても仕方ありません。

(5)募集要項はなくとも情報を...続きを読む

QPro*cのバインド変数をカンマ区切りで指定できますか?

Pro*cのバインド変数で下記のようなwhere句のinでカンマ区切りを指定することはできないのでしょうか?
Oracle9iです。
適当な書き方で申し訳ありませんがよろしくお願いします。

------------------------
EXEC SQL BEGIN DECLARE SECTION;
const char*bindAAA;
EXEC SQL END DECLARE SECTION;

// bindAAAバインド変数に'1,2,3'という具合に格納

↓のSQLを実行したい
select * from AAA where BBB in (:bindAAA)

Aベストアンサー

出来ません。

Q同志社大学のオープンキャンパスについて

京田辺キャンパスと今出川キャンパスで別の日程でオープンキャンパスがあるようですが、
どちらのオープンキャンパスに行けばよいのでしょうか?
受験予定学部は商学部フレックスBです。回答よろしくお願いします。

Aベストアンサー

greengam2005さん、こんにちは。私は現在、同志社大学四回で京田辺キャンパスに通っている者です。商学部のフレックスBに通う友人がいますし少しでも役に立てればと思い回答させて頂きます。おおまかに言えば理系(工学部)は四年間京田辺キャンパスに通い、文系(文、商、経済学部等)は1~2回生の時は京田辺キャンパスに、3~4回生の時は今出川キャンパスに通います。”おおまかに”と書いたのは文系で政策学部は4年間今出川に通うなど例外があるということを聞いたことがあるからです(曖昧な情報でごめんなさい)。商学部フレックスBを受験予定という事ですので入学されればどちらにも通うことになりますので時間が許すのであれば両キャンパスを見ておくことをおすすめします。志望する大学のオープンキャンパスにできる限り参加し、ぜひ自分の目で確かめて後悔のない志望校選びをしてください。その中で同志社大学を選択されgreengam2005さんが後輩になってくれれば素直に嬉しいです。暑い日が続いていますがどうか体調管理には気をつけて受験勉強がんばってください。

QPro*Cのマニュアル本について

現在、私はPro*Cのマニュアルはオラクルのサイトから「Pro*C/C++ プログラマーズ・ガイド」というPDFをダウンロードして参照していますが、このマニュアルがPDFでなく書籍があるということを聞きました。
自分も書籍として「Pro*C/C++ プログラマーズ・ガイド」がほしいのですが、どうやって手に入れることができるのでしょうか?
ご教授の程、よろしくお願いします。

Aベストアンサー

一度、日本オラクルに欲しいPro*Cのマニュアルのバージョンと一緒に問い合わせた方が良いかと思います。

古いバージョンなら残っている代理店があるかも知れませんが、紙マニュアルはかなり高い(PDFファイルを印刷屋に持ち込んで製本してもらった方が安いかも知れないと言うレベル)ので、どうしても紙のマニュアルが欲しい人向けになっているようです。

Pro*C/C++ プログラマーズ・ガイドは、マニュアルセットに入っていない様なので、現在は作っていない可能性もあります。US Oracleは受注生産だったと思いますが日本オラクルがどうやっているかは解りません。

昔のPro*C/C++のWindows版パッケージにはプログラマーズ・ガイドを同梱していたはずですが今はそのような売り方をしていないはずなので。

参考URL:http://www.oracle.co.jp/contact/index.html

Qオープンキャンパス以外の日には行ってもいいの?

オープンキャンパスの日程にあわせて見学に行けば、学校側で丁寧に案内してくれるだけで、オープンキャンパスの日に行かなくても大学内は自由に見てまわれるのですよね?

Aベストアンサー

全然オッケーですよ。私は国立大学に通っていますが、私服ならわからないです。グラウンドでおじさんがランニングしてますし、おばさんが犬の散歩をキャンパス内でしてます。制服を着た高校生も朝、夕の通学に通ります。学食も子供ずれの人が食べてたりするので、自由に入ってみて大丈夫ですよ。
私が高校生のとき、友達が私立の大学にオープンキャンパスの日ではない日に大学にいって、キャンパスを見ていいか聞いたところ、丁寧に案内してくれたそうです。なので、入試の前にいってみるといいと思います。

QPro*CでのINSERT文

こんにちわ。
Pro*CでのINSERT文について質問させてください。
例えば、CUSTOMERSというテーブルを作り、メンバーをC_ID, CNAME, ADDRESSとしたときに、INSERT文を使用しまして、
新規のお客さんのデータをいれようと考えています。そのとき、C_IDの値をすでに入れてあるC_IDの最大値+1として、格納したいのですが、どうも旨くいかずに行き詰っています。MAX(C_ID)を使用することは分かっているのですが、INSERTとの組み合わせ方がわからず、困っています。
どなたかうまいやりかた(SQL文)があれば教えていただけないでしょうか?
もちろん、C言語で書きましたプログラム内に組み込みたいと考えています。
OSはUNIX(SUN)、DBはORACLE9を使用しています。
どうかよろしくお願いいたします。

Aベストアンサー

IDの連番を管理するテーブルを別途作成してトランザクション処理を行うか、
順序(SEQUENCE)を使ってみてください。
SEQ_CUSTOMERSという順序を作成し、
INSERT INTO CUSTOMERS(C_ID,CNAME,ADDRESS)
VALUES(SEQ_CUSTOMERS.NEXTVAL,'name','address')
のように使用します。

参考URL:http://www.mitene.or.jp/~rnk/TIPS_ORCL_SEQ.htm

Q富大オープンキャンパス

富大薬学部のオープンキャンパスに行きたいのですが、まだ「8月上旬」、としか発表されていません。

けれども、学校にオープンキャンパスの計画書みたいなのを提出しなければならず、8月上旬は部活の大会があり、万が一同じ日だと困るので、別の大学にしようか迷っています。

過去の日程から今年の日程を予測しようとしましたが、調べてもわかりませんでした。

そこで、過去の日程等、わかる方がいましたら、教えてください。

些細な情報でもいいので、よろしくお願いします。

Aベストアンサー

大学の「受験生の方へ」では「8月上旬」となっていますが,薬学部の「薬学部トピックス」には『Open Campus「楽しい薬学部への1日体験入学」を開催します.』とあり,『来たる7月19日(日)に、薬学への招待:第23回 楽しい薬学部への1日体験入学を開催します(高校生を対象).』とあります。

 詳細はこちらのようです。

 ・http://www.pha.u-toyama.ac.jp/pharm/taiken.htm
  *薬 学 へ の 招 待* 第23回 楽しい薬学部への一日体験入学

参考URL:http://www.pha.u-toyama.ac.jp/pharm/taiken.htm

Q【再投稿】Pro*Cの大文字小文字

こんにちは。
現在Oracle9 Pro*Cで開発をしているのですが、下記のSQLが変です。
どう変かというと・・・

(1)EXEC SQL SELECT ABC FROM DB1 WHERE A_NUM = \'1\';
(2)EXEC SQL SELECT abc FROM DB1 WHERE A_NUM = \'1\';
(3)EXEC SQL SELECT Abc FROM DB1 WHERE A_NUM = \'1\';

元々(1)のように記述してありました。
それがある日突然データがあるのにNotFoundになって、ためしに項目名ABCをabcに変えたところ、なぜだかselectできるようになりました。
しかし(2)も今日突然データがあるのにNotFoundになり、(3)のようにAbcにかえたところ、selectできるようになりました。
大文字小文字は関係ないと誰に聞いても言われるのですが、実際今は(3)でないと同じデータでもselectできません。
今はこれでいいですが、この調子で行くときっといつか(3)でもselectできなくなり、aBcとかにしなくてはいけない日が来ると思うのです。
なんででしょう?
環境の問題とかでしょうか?

何か分かる方がいたら、よろしくお願いします。

こんにちは。
現在Oracle9 Pro*Cで開発をしているのですが、下記のSQLが変です。
どう変かというと・・・

(1)EXEC SQL SELECT ABC FROM DB1 WHERE A_NUM = \'1\';
(2)EXEC SQL SELECT abc FROM DB1 WHERE A_NUM = \'1\';
(3)EXEC SQL SELECT Abc FROM DB1 WHERE A_NUM = \'1\';

元々(1)のように記述してありました。
それがある日突然データがあるのにNotFoundになって、ためしに項目名ABCをabcに変えたところ、なぜだかselectできるようになりました。
しかし(2)も今日突然データがあるのにNotFound...続きを読む

Aベストアンサー

回答が付かないですね・・・
そういう私も答えは持ってません。
OTNの掲示板で問合せしてみてはいかがでしょう?
それでもダメならサポートセンターでしょうね・・・

参考URL:http://otn.oracle.co.jp/forum/index.html


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング