タイトル通りの質問です。例えば、重複キーエラー時等はクエリアナライザを使用してストアドプロシージャを実行した場合に、「PRIMARY KEY 違反、制約 'PK_xxx': オブジェクト 'tbl_xxx' には重複したキーは挿入できません。」という様なメッセージが返されます。このメッセージをVB側に返したいのですが、方法がわかりません。質問は以下の3つです。
1)上記の様なエラーの場合は、vb側でon error goto&errorsコレクションでエラーハンドリングは出来ないのでしょうか?(現状トラップしてくれません。)
2)出来ないのであれば、ストアド内でエラーメッセージを取得して、outputパラメータで返却するしかないのかなと思っております。
3)なぜか、create tableで既にあるテーブルを指定してわざとエラーを発生させた直後に@@errorでvb側にリターン値を返却してもempty値として返されます。なぜでしょう。
以上、3点について教えて下さい。(何れかでも構いません)よろしくお願いします。
環境:win2000,sqlserver2000
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
1)について。
VB側のErr.Discriptionに入りませんか?
もし、入らないのであれば、試してないので断言は
できませんが、少なくとも、RAISERROR でストアド
内でRAISEすれば取れそうな気がします。
3)について
ストアドで返した値ではなく、エラーとなるSQLを実行
した後にVB側で@@ERRORを取ろうとしてもダメです。
(そう言う事でないならごめんなさい)
ストアドのOUTとして返すか、BEGIN~ENDで括った形で
@@ERRORをとればイケルと思います。
この回答への補足
色々試していたので連絡が遅くなり申し訳ありませんでした。取り急ぎ、Err.Descriptionには何も入りません。Raiserrorも試してみましたがon errorに引っ掛かりません。しかも恐らくRaiserrorはユーザー定義エラーを発生させる様なものかなと思います。やりたい事はストアドプロシージャで発生したシステムエラーメッセージをそのまま(ユーザー定義メッセージ等は作成しないで)VB側に返したいだけなのですが。。。つまり、on errorで引っ掛からないならば、ストアドからoutパラメータでエラーメッセージを返すというださい方法でも構いません。ですが、ストアドでそのエラーメッセージを取得する方法すらわかりません。(勿論@@ERRORでエラー番号は取れます。)master DB内のsysmessagesテーブルにエラー番号とメッセージの対応表が格納されている様ですが、これをselectで取得するという事も考えましたが、可変文字列(制約名、オブジェクト名)等がある為、そのままでは使用できません。何か良い方法はありませんでしょうか?イメージ的にはon errorで取れない事がそもそもなぜ?どういうエラーなら引っ掛かる?という感じで、次の手段として、@@ERRORMSGみたいなものがあってシステムエラーメッセージがストアド内で簡単に取得出来る方法が無いかな?という状態です。よろしくお願いします。
補足日時:2004/12/28 11:31お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL エラー 1068 (42000): 複数の主キーが定義されていますエラー 2 2022/11/17 04:36
- MySQL 何にかが違うから エラーなんでしょうね! 2 2022/09/18 05:28
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- Oracle Oracleですがsqlで質問です。 サブクエリ内で番号というカラムで昇順の1レコード目を取得したい 3 2023/05/22 10:02
- Visual Basic(VBA) VBA 改行コードの取り方 1 2022/03/22 14:14
- その他(ソフトウェア) 一太郎付属の”全件検索”ツールの不具合 3 2023/07/25 15:03
- MySQL #1062 - '0' は索引 'PRIMARY' で重複しています。とでています。 1 2023/01/01 06:13
- オープンソース Python openpyxlを使用したセル番地の使用について 1 2023/08/03 22:05
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- Excel(エクセル) 【マクロ】エラーが発生⇒実行時エラー58既に同名のファイルが存在 5 2022/08/31 10:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルマクロで指定範囲内の...
-
MySQLの不可解なエラー
-
phpmyadmin
-
Oracle 8i コンマ(,)を含むデ...
-
エクセルのグループボックス枠...
-
Access2000でDAOを使用したとき...
-
PostgreSqlでFunctionの作成に...
-
SQL ServerのSQL実行時のエラー...
-
OS再起動時にSQLServerがイベン...
-
SQL SERVER の UNION ALL と GR...
-
今、何のストアドを実行してい...
-
DBサーバーはどれがいいのですか?
-
NAT-KUのノートパソコンは?
-
既定のインスタンスと名前付き...
-
SQL Server に繋がらない
-
sqlcmdでクエリの実行結果をバ...
-
バッチからSQLCMDを実行する方法
-
AdobeのPremiere Pro?を使いた...
-
ACCESSからのODBC接続のみ応答...
-
Windows 11の対象に ryzen の第...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Oracle 8i コンマ(,)を含むデ...
-
SQLのエラー(~付近に不適切な...
-
GROUP BYでエラーが発生
-
エクセルマクロで指定範囲内の...
-
PostgreSqlでFunctionの作成に...
-
バッチファイルからのBCP起動に...
-
ACCESS ADOでupdateが効かない
-
ACCESSで作成したアプリケーシ...
-
sqlで文字列を最後に追加したい
-
オブジェクト名 '<table>' が無...
-
SQLserverのIF文について
-
エクセルのグループボックス枠...
-
ストアドの戻り値(配列)について
-
エクセルからSQLサーバー ...
-
Access2000環境に対応するMid関...
-
レポートが開けない。
-
ACCESS2000ディスクまたはネッ...
-
分散トランザクションを開始で...
-
oo4oのMovePreviousnメソッドに...
-
SQLServerが存在しないか、アク...
おすすめ情報