問題タブ [raiserror]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - C# で SQL の「raiserror」と「select」を組み合わせる
raiserror
SQL を使用し、選択した結果を C# で取得する方法があるかどうかを知りたいです。ExecuteReader()
C# では、発生時に例外がスローraiserror
されますが、リーダーを使用して返されたデータをキャプチャしたいと考えています。
以下は簡単な例です。これが不可能な場合はraiserror
、一般的なケースとselect
特定のケースに使用します。
sql - RAISERROR を使用してメッセージをスローし、トランザクションをコミットする方法は?
RAISERROR を使用してメッセージ (ポップアップ メッセージ) をスローし、そのトランザクションをコミットする必要があります。オプションはありますか?
重大度18の場合、トランザクションはロールバックされました。重大度を10に変更して、次のように試しました
これはトランザクションをコミットしますが、メッセージは表示しません。ここで必要なのは、メッセージをスローし、トランザクションをコミットする必要があることです
なにか提案を?
sql-server - 別のストアドプロシージャを呼び出すストアドプロシージャの例外フロー
別のストアドプロシージャを呼び出すストアドプロシージャがあります。SP2には、try / transaction / catch / rollback/raiserrorがあります。SP2でエラーが発生した場合、SP1を介して呼び出し元にバブルアップしますか、それともtry / catchでSP2への呼び出しをネストする必要がありますか?後者の場合、SP1を起動/終了するときに、SP2からのエラーの「スタックトレース」を強制終了しないようにするにはどうすればよいですか?
-これにより、SP2からのエラーが発生し、SP1も終了しますか?
-または、これを行う必要がありますか?
sql - RAISERROR を使用して ACCESS DENIED エラーを示す
呼び出し元が特定のパラメーターでこの sproc を呼び出す権限があるかどうかを検証する sproc があります。RAISERROR
呼び出し元が承認されていない場合に備えて、ACCESS DENIED エラー番号を使用したい。エラー番号は 50000 より大きくなければならないため、エラー番号 10011 (sys.messages でアクセスが拒否されました) になることはありませんsp_addmessage
。同じ ACCESS DENIED エラーを再現します。これを行う正しい方法は何ですか?
編集:必要な SQL コードは SQL Azure と互換性があるはずだったので、RAISERROR
エラー番号なしで呼び出し、コード ビハインドでデフォルトの 50,000 エラー コードをチェックすることになりました (SQL Azure では、現在 と のサポートはsp_addmessage
ありませんsys.messages
)。
sql-server-2005 - RAISERROR を使用して t-SQL で特定のエラーを発生させる
トリガーを持つビューがありINSTEAD OF INSERT
ます (SQL Server 2005)。ユーザーがビューに挿入するとき、実際には多くのテーブルに対して挿入と更新を行っています。ビューはインデックスを持つことができないほど複雑であるため、残念ながら制約がありません。
ビューは、変更が問題となるコードを使用して C# から挿入されています。このコードは、以下を使用して主キー違反と一意キー違反をキャッチします。
私の質問は次のとおりです。RAISERROR
トリガー内で使用して、番号 2627 または 2601 の例外を作成できますか?
sql-server - SQLException番号の設定方法
セットアップに問題がありますSqlException.Number
ストアドプロシージャでエラーが発生しています
私はそうあるべきだと期待するError_Number()
べきです@number
が、私は常に18054を取得します
私に何か問題がありますRAISERROR
か?
sql - SQL Server でエラー メッセージを作成できない
内に次のコードがあります。stored procedure
動作しないこと、動作するはずがないことはわかっていますが、意図を説明したかったのです。
誰が私が何をすべきか教えてもらえますか? または、このタイプの文字列の作成に関するリンク。
編集: @Dates が の両方であると言うのを忘れましdatetime
た。エラー メッセージは、日時から文字列に変換できないということです。
sql - 非常にトリッキーな ADO.Net の状況で、エラーはスローされませんが、スローされる必要があります。
以下のように、ストアド プロシージャを呼び出す ADO.Net コードがあります。ストアド プロシージャ内では、最初に SELECT クエリを使用して結果セットを取得し、次にRAISERROR
、渡された @companyId パラメーター値が存在しない場合は SELECT ステートメントを呼び出した後に取得します。@companyId の値を使用してこのコードで単体テストを何度も実行したため、呼び出されましたが、エラーをスローするRAISEERROR
呼び出しは見られません。この奇妙で直感に反することが起こっている理由は何ですか?ExecuteReader
ストアドプロシージャコードは以下のようなものです
c# - c#asp.net:SQLストアドプロシージャからraiserror()メッセージをキャプチャします
選択したプログラミング言語としてC#を使用して、ASP.NET4.0に頭を悩ませようとしています。私は優れたSQL開発者なので、ビジネスロジックのほとんどをSQLで実行する予定です。アプリケーションは、ストアドプロシージャを介してのみデータベースと対話します。
aspxページには、sp'season_get_byID'を呼び出すデータビューを設定するためのデータソースと、いくつかのパラメーターを受け取る更新'season_update'のためのデータソースがあります。
aspxソースは
各asp:Parameterがストアドプロシージャの@Param引数にマップされる場所-これまでのところ非常に優れています
ストアドプロシージャは、更新を試みる前にいくつかの検証を行います。検証が失敗すると、RAISERROR(@ errmsg、10,1)が発生します。
私が理解できないのは、aspx.csコードビハインドファイルのどこでエラーをキャプチャしようとし、構文はどうあるべきかです:after_updateイベントハンドラーにあるべきであり、そうであれば、その一部ではないように見えますe。例外。このルーチンの検証の一部は検証クラスを使用して実行できることを知っていますが、これは最終的な製品コードではなく、環境を操作するための学習演習です。つまり、「正しい」ものではなく、何が可能かを理解しようとしています。
ストアドプロシージャのテキストは以下のとおりです。
sql-server-2008 - SQLエラーの消去-SQLエラーが失われる
削除される前に削除されたレコードをログに記録するDataSnapメソッドがあります。削除が失敗した場合は、ログレコードも保持されないようにトランザクションをロールバックします。失敗の典型的な理由は、削除されているレコードが別のテーブルで使用されていることです。
私のSQLは次のようになります。
これは問題なく機能します。ただし、エラーメッセージは抑制されるため、DataSnapサーバーはエラーメッセージを認識しません。SQL構文エラーは常にエラーメッセージを表示し、その他の挿入/更新の一意キーおよび外部キー違反は常にエラーを返します。このコードがエラーを抑制する理由がわかりません。DataSnapコードは単純です。
クエリは問題なく実行されるため、構文エラーやパラメータのバインドに関する問題は発生しません。外部キー違反エラーは表示されません。SQL Management StudioでSQLを実行すると、常にエラーが表示されます...そこでcatch
、次のようにブロックを変更してみました。
DataSnapサーバーのデバッグ時にエラーが発生することはまだありません。そのため、もちろんクライアントアプリはエラーについて何も知りません。'raiserror'と外部キー違反エラーがDataSnapサーバーに表示されない理由を誰かが知っていますか?
参考までに-私はDelphiXE2EnterpriseとSQLServer2008R2をすべてWindowsServer2008R2で実行しています。