
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ではエラーになるのでしょうか?
No.1ベストアンサー
- 回答日時:
>実行すると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
回答ありがとうございます。
ご指摘の通りvErrMsg,vErrCodeの初期値がまずかったようで、修正後すんなり正常動作しました。
今回初めてこのサイトを利用させていただきましたが、初回から大ヒットです。今後活用させていただくよいきっかけになりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP 重複を防ぐ記述について教えて下さい。 3 2023/04/03 14:35
- Ruby 教えてください 2 2023/01/04 17:50
- PHP DBのハッシュ化したパスワードをpassword_verifyで戻し照合したのですが上手く行きません 2 2023/02/06 13:24
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- PostgreSQL DBFluteについて質問です。 環境:PostgreSQL java8 前提:webアプリケーショ 1 2022/07/07 00:49
- その他(プログラミング・Web制作) pythonのグローバル変数 2 2022/11/25 18:02
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- MySQL 何にかが違うから エラーなんでしょうね! 2 2022/09/18 05:28
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
OracleとADO
-
ORA-01013のエラーについて経験...
-
iTuneでCDを作成したいのですが
-
Dynabook T351/46CW のエラーコ...
-
SQLのSP2-エラーについて
-
フラグメンテーションの解消
-
オラクルエラーの早見表
-
AIX機へのOracleインストール中...
-
メモリ不足について
-
ストアド実行でORA-4030エラー ...
-
DATABSE LINKについて
-
CASE文のエラーについて
-
PL/SQLについての質問です。
-
MySQL ログについて(有効にす...
-
xy平面上の点P(x,y)に対し,点Q(...
-
HD 上の「移動できないファイル...
-
iTunesで曲のバックアップ???
-
オラクル9iのリストア
-
クローンソフトで、Acronis Tru...
-
リカバリ時のデータバックアッ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ORA-01013のエラーについて経験...
-
PL/SQL PLS-00103エラーについて
-
CASE文のエラーについて
-
ORA-01843: 指定した月が無効で...
-
はじめまして!
-
PCC-S-02201エラーの対処を教え...
-
「ORA-00907: 右カッコがありま...
-
ORA-06502のエラー
-
シェルスクリプトでオラクルの...
-
PL/SQLによるCREATE TABLE後のI...
-
PL/SQLのコンパイルエラーにつ...
-
ACCESSでパススルークエリにパ...
-
データベースのカラムの型がCHA...
-
ビューが作成できない
-
HAVING句でのBETWEEN演算子
-
ORA-12571パケット書き込みエラ...
-
無効なSQL文の具体例を教えてく...
-
pro*c で pl/sql に変数を渡す...
-
PL/SQLでPLS-00201のエラー
-
エラーコードについて
おすすめ情報