C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: plsqlエラーをASPでキャッチ


(過去ログ 37 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■18919 / inTopicNo.1)  plsqlエラーをASPでキャッチ
  
□投稿者/ アル (4回)-(2008/05/18(Sun) 02:31:20)

分類:[ASP.NET (C#)] 

2008/05/18(Sun) 02:32:40 編集(投稿者)

ASP.NET C#です
plsql(ストアドファンクション)をC#で呼び出してSQL文を実行しておりますが、
制約違反などでエラーが合った場合もそのまま実行されてしまいます。
そのまま実行というのはもちろん制約があるためSQLは実行されませんが、プログラム上からTRYなどで囲みエラーを
受け取ろうとしてもそのままキャッチに飛ばず実行されてしまいます。

どうすれば制約エラーなどをプログラム上から受け取れるのでしょうか
宜しくお願い致します。


引用返信 編集キー/
■18920 / inTopicNo.2)  Re[1]: plsqlエラーをASPでキャッチ
□投稿者/ やじゅ (378回)-(2008/05/18(Sun) 04:26:45)
やじゅ さんの Web サイト
No18919 (アル さん) に返信
> 2008/05/18(Sun) 02:32:40 編集(投稿者)
>
> ASP.NET C#です
> plsql(ストアドファンクション)をC#で呼び出してSQL文を実行しておりますが、
> 制約違反などでエラーが合った場合もそのまま実行されてしまいます。
> そのまま実行というのはもちろん制約があるためSQLは実行されませんが、プログラム上からTRYなどで囲みエラーを
> 受け取ろうとしてもそのままキャッチに飛ばず実行されてしまいます。
>
> どうすれば制約エラーなどをプログラム上から受け取れるのでしょうか
>

私がやっている方法では
ストアド側でエラー用の戻り引数を用意し、そこにエラー内容を返すようにします。
C#側でエラー用の引数の戻り値を判断して、例外エラーとします。
引用返信 編集キー/
■18921 / inTopicNo.3)  Re[1]: plsqlエラーをASPでキャッチ
□投稿者/ はつね (703回)-(2008/05/18(Sun) 08:16:40)
はつね さんの Web サイト
No18919 (アル さん) に返信
> plsql(ストアドファンクション)をC#で呼び出してSQL文を実行しておりますが、
> 制約違反などでエラーが合った場合もそのまま実行されてしまいます。

PL/SQLの中でEXCEPTIONを指定して例外ブロックを記述して、エラー発生時にエラーを
キャッチしていませんでしょうか?

案1:
もし可能ならば、その方法をEXCEPTION指定を除けばPL/SQL実行中にエラーが発生すれば
呼び出し元のC#側でキャッチできます。

案2:
EXCEPTION指定をそのままにしておきたいという事であれば、その例外ブロックの最後
でRAISEを記述して、例外をC#側にスローしてください。


もし、PL/SQLの中でEXCEPTIONを指定していないのであれば、ADO.NETでの指定などが
こちらの想定と違い可能性もあるので、どのようにPL/SQLを呼び出しているか、ミド
ルウェアには何を指定しているのかなど、詳しい状況を教えてください。

引用返信 編集キー/
■18922 / inTopicNo.4)  Re[2]: plsqlエラーをASPでキャッチ
□投稿者/ やじゅ (379回)-(2008/05/18(Sun) 10:59:04)
やじゅ さんの Web サイト
No18921 (はつね さん) に返信

そういう方法があったんですね、勉強になります。
今度、試してみます。

引用返信 編集キー/
■18926 / inTopicNo.5)  Re[3]: plsqlエラーをASPでキャッチ
□投稿者/ はつね (704回)-(2008/05/18(Sun) 11:51:36)
はつね さんの Web サイト
No18922 (やじゅ さん) に返信
> そういう方法があったんですね、勉強になります。

CMです。5/31の東京勉強会のセッションではこのあたりも切り込んでいきます。
#セッションのpptから引っ張ってきた内容だから、回答が詳細だというのは内緒w

引用返信 編集キー/
■18927 / inTopicNo.6)  Re[4]: plsqlエラーをASPでキャッチ
□投稿者/ アル (5回)-(2008/05/18(Sun) 12:36:02)
No18926 (はつね さん) に返信
> ■No18922 (やじゅ さん) に返信
>>そういう方法があったんですね、勉強になります。
>
> CMです。5/31の東京勉強会のセッションではこのあたりも切り込んでいきます。
> #セッションのpptから引っ張ってきた内容だから、回答が詳細だというのは内緒w

回答有難うございます。
ミドルウェアはODP.NETです
今試せないのでなんともいえませんが、

案1:
もし可能ならば、その方法をEXCEPTION指定を除けばPL/SQL実行中にエラーが発生すれば
呼び出し元のC#側でキャッチできます。

は、試しましたが確かキャッチで受け取れなかった記憶があります。
ですが出来なかった場合は戻り値で受け取ろうと思います。

良回答有難うございます
引用返信 編集キー/
■18934 / inTopicNo.7)  Re[5]: plsqlエラーをASPでキャッチ
□投稿者/ はつね (705回)-(2008/05/18(Sun) 14:42:25)
はつね さんの Web サイト
No18927 (アル さん) に返信
> ミドルウェアはODP.NETです
> 今試せないのでなんともいえませんが、
>
> 案1:
> もし可能ならば、その方法をEXCEPTION指定を除けばPL/SQL実行中にエラーが発生すれば
> 呼び出し元のC#側でキャッチできます。
>
> は、試しましたが確かキャッチで受け取れなかった記憶があります。

最小コードで上記の案の動作は簡単に確認できます。もし、キャッチできなかったとしたら、
PL/SQL側でEXCEPTIONが削除しきれていなかったり、C#側のコーディングミスが考えられます。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -