![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
OSのバージョンUPに伴いoracle、perl、DBI等のバージョンもあげました
perl 5.8.7 DBI-1.52 oracle9i
perl 5.005_03 DBI-1.13 oracle8.0.5
その関係かはよくわからないのですが、エラー処理の実行結果が異なってしましました
$sth = $dbh->prepare("$sql") or die "Cannot prepare: " . $dbh->errstr();
$sth->execute() or die print "データベースエラー";
このSQL文の実行結果はエラーの際、「データベースエラー」というdieメッセージとなります
しかしバージョンをあげた方では、メッセージが表示されません
$sthを出力してみたところ、空でした
エラーでない場合の実行結果は同じになります
原因がわからず困っています
同じようにエラー処理(エラーメッセージを表示させたい)のですが、どのようにしたらよいでしょうか?
どなたかご教授ください
宜しく御願いします
No.2ベストアンサー
- 回答日時:
> -> errstr in DBD::_::common
と出力されているから、
die "Cannot prepare: " . $dbh->errstr();
が実行されてますね。
こちら側でもエラーメッセージを出力すれば良いのでは。
# でも die print はあんまりだと思う。
回答有難う御座います!
そうなんです、バージョンUPした方では「die "Cannot prepare: " . $dbh->errstr();」が実行されているようです
しかしバージョンが低い方では実行されていないようです
この違いがどうして起こるのか不明です
osamuyさんのアドバイスによりテストしてみたところ、確かにここでエラー出力できました
上記の問題が解決されていないので、もう少し検討してみたいと思います
有難う御座いました
No.1
- 回答日時:
DBIのトレースをオンにして、何が起きているか確認してみて下さい。
この回答への補足
アドバイスありがとうございます
早速以下のようにトレースをオンにして確認してみました
$dbh->trace(2, 'DBI.trace');
$sth = $dbh->prepare("$sql") or die "Cannot prepare: " . $dbh->errstr();
$sth->execute() or die print "データベースエラー";
結果は以下です
DBI::db=HASH(0x41c0d0) trace level set to 0x0/2 (DBI @ 0x0/0) in DBI 1.52-nothread (pid 12817)
Note: perl is running without the recommended perl -w option
-> prepare for DBD::Oracle::db (DBI::db=HASH(0x3d660c)~0x41c0d0 ' select * from denshi where name <*>like '%'%'')
-> DESTROY for DBD::Oracle::st (DBI::st=HASH(0x41c5bc)~INNER)
ERROR: '911' 'ORA-00911: 文字が無効です。 (DBD ERROR: error possibly near <*> indicator at char 127 in ' select * from denshi where name <*>like '%'%'' (err#1)
<- DESTROY= undef at test.pl line 197
!! ERROR: '911' 'ORA-00911: 文字が無効です。 (DBD ERROR: error possibly near <*> indicator at char 127 in ' select * from denshi where name <*>like '%'%'' (err#0)
<- prepare= undef at test.pl line 197
1 -> FETCH for DBD::Oracle::db (DBI::db=HASH(0x41c0d0)~INNER 'ParamValues')
ERROR: '911' 'ORA-00911: 文字が無効です。 (DBD ERROR: error possibly near <*> indicator at char 127 in ' select * from denshi where name <*>like '%'%'' (err#0)
1 <- FETCH= undef at test.pl line 197
-> errstr in DBD::_::common for DBD::Oracle::db (DBI::db=HASH(0x3d660c)~0x41c0d0)
ERROR: '911' 'ORA-00911: 文字が無効です。 (DBD ERROR: error possibly near <*> indicator at char 127 in ' select * from denshi where name <*>like '%'%'' (err#0)
<- errstr= 'ORA-00911: 文字が無効です。 (DBD ERROR: error possibly near <*> indicator at char 127 in ' select * from denshi where name <*>like '%'%'' at test.pl line 197
! -> DESTROY for DBD::Oracle::db (DBI::db=HASH(0x41c0d0)~INNER)
ERROR: '911' 'ORA-00911: 文字が無効です。 (DBD ERROR: error possibly near <*> indicator at char 127 in ' select * from denshi where name <*>like '%'%'' (err#0)
! <- DESTROY= undef during global destruction
select文は長文のため短くしてあります
トレースをオンにしてみましたが、扱うのがはじめてなもので、あまり理解できませんでした、すみません
この結果から何かわかりますでしょうか?
oracleでは双方共に「ORA-00911」エラーを返しているのは、SQL文の条件にアポストロフィ'が入っているからで、これはエラーになって正しいです
宜しく御願いします
すみません、まだ解決していないのですが、補足説明する場所がわからずここに記入させていただきます
上記補足のトレース結果の条件文が間違えていました
where name like '%'%' or code like '%'%'
ただしくはこちらになります
宜しく御願いします
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP PHP一覧表示した項目にリンクをはりたい 1 2023/07/12 17:08
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- MySQL #1062 - '0' は索引 'PRIMARY' で重複しています。とでています。 1 2023/01/01 06:13
- Excel(エクセル) Indirect関数について、Formulatextで抽出した数式を参照したい。 1 2022/12/15 11:16
- Perl Perlのエラーについてご教授ください。初心者です。 CGIを別サーバに移したところ、Perlのバー 5 2023/05/31 10:48
- Oracle Oracleですがsqlで質問です。 サブクエリ内で番号というカラムで昇順の1レコード目を取得したい 3 2023/05/22 10:02
- Access(アクセス) ACCESS2019でのエラーメッセージ 1 2023/08/15 17:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBからブラウザの表示状態(リ...
-
ASPが実行できない(エラー500
-
教えて下さい。
-
VBAで旧字体を異字体に一括で変...
-
【vba】フォームに書いてあ...
-
文章の分割
-
「デバイスは PRN を初期化でき...
-
Perlソースコードをコンパイル...
-
VBA This Workbookモジュール...
-
モジュールとは何ですか
-
Cからシェルを起動し返り値をハ...
-
Excel VBAでリンク切れをチェッ...
-
VBAProjectのモジュ...
-
エクセルVBAでシートモジュール...
-
Excel2000VBA 複数のテキストボ...
-
Excel VBA 定義されたプロージ...
-
perlのgrepで日本語の処理でエ...
-
例外処理のフローチャートの記...
-
エクセルVBAで標準モジュー...
-
Excel VBAで、ユーザーフォーム...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBSがコンパイルエラーになりま...
-
教えて下さい。
-
perlをバージョンアップしたら...
-
SWI-Prologでのエラーに関して
-
erf(x)とerfc(x)のカタカナ読み...
-
POSTで送信するとエラーになる
-
au「W54S」だけcgi-lib.plで不...
-
【python】requestsでdataとし...
-
w3cの検証エラー?
-
WebClientの文字列送信にてエラー
-
Pealでエラーメール自動処理
-
ホームページをHTTPS化したらbi...
-
英字のみを検索する正規表現に...
-
CGIの接続エラー
-
Pythonプログラミングでエラー
-
windows7のperlでaccdb接続でエ...
-
perl ver5.24.0 x68版で、requi...
-
ラズパイ4からGmailへの...
-
Unityでアニメーションできない
-
powershellで引数受け取り時に...
おすすめ情報