問題タブ [output-parameter]
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.
sql-server - ADO.NETがT-SQLストアドプロシージャを呼び出すと、SqlTimeoutExceptionが発生します
署名付きのT-SQLストアドプロシージャがあります
SQL Serverで直接実行すると、プロシージャは5秒未満で実行され、合計で約100行になるいくつかの結果セットが返されます。
ADO.NETSqlDataAdapter.Fill
メソッドを使用してこのプロシージャを呼び出してaを設定Dataset
するSqlTimeoutException
と、SqlCommand
3分後(指定されたタイムアウト間隔)にが発生します。
ストアドプロシージャを変更して、出力パラメータがなくなり、必要な出力値が最後の結果セットとして返されるようにすると、問題が解決し、すべてが期待どおり5秒未満で実行されます。
しかし、なぜ?
問題を本当に解決したかどうかを理解せずに、コードベースを調べて、このタイプの動作のすべてのインスタンスを変更したくありません。
もう1つの注意点は、これは1つの特定のサーバーでのみ明らかであり、私たちが実行している他の同様のデータベースよりも大きなデータセットを持っていることは確かです。確かにSQLServerの設定ではありませんか?
アップデート
フレームワークソースにステップインすると、問題はメタデータの取得にあるようです。オブジェクトのConsumeMetaData
メソッドはSqlDataReader
無期限にハングします。ただし、他のデータベースでテストを実行したため、再現できないため、このプロシージャがADO.NETを介して呼び出された場合のデータベース固有の問題です...すばらしい。
更新II
OleDbDataAdapter
SQLOLEDBまたはSQLNCLIプロバイダータイプでを使用するようにコードを変更しても、問題が引き続き発生することを確認しました。間違いなく接続と関係があります。
java - Spring の JDBC サポートを使用して出力パラメーターを取得する
Spring の JDBC サポートを使用して、Oracle データベースで SQL クエリと更新を実行しています。行を挿入してから、割り当てられたキーを取得したいと思います (Oracle シーケンスを使用)。通常の JDBC コードでは、RETURNING INTO 句を含めてから、出力パラメーターを登録します (こちらで詳しく説明しています) 。
ただし、Spring を使用してすべての JDBC 作業を処理したいと考えています。挿入以外の SQL ステートメントについては、現在 MapSqlParameterSource オブジェクトを使用し、すべての入力パラメーターを登録しています。このような出力パラメーターも登録して、返してもらうことはできますか? Spring ドキュメントの第 11 章の部分を調べたところ、ストアド プロシージャを使用している場合は出力パラメーターがサポートされていることがわかりましたが、可能であればそれを避けたいと思います。ありがとう。
c# - C#で出力パラメータと結果セットを使用してSPを読み取りますか?
この単純化された例のようなストアド プロシージャを作成しました。
ExecuteReader()
オブジェクトのメソッドを呼び出した後、出力変数から値を読み取ろうとするとSqlCommand
、値が null になります。
私が間違っていることは何ですか?
java - Java の出力パラメータ
サードパーティの API を使用して、次のことを確認しました。
使用する代わりに、
次のようなものを使用します
「出力」文字列が割り当てられています。
そのような機能を実装する理由が気になります。このような出力パラメータを使用する利点は何ですか?
boost - 割り当てられた出力パラメーターを scoped_ptr/array でラップする
したがって、次のようなコードがあります。
これをより安全にするために、scoped_array を使用しました。
問題は、一時的な生の配列を使用せずに、scoped_array だけを使用してこれを行う既存の方法があるかどうかです。
機能が存在するかどうか疑問に思っているだけで、おそらくインプレースの「リセッター」クラスを作成できますが、それがありません。
ありがとう、ダン
oracle - NHibernateは、OracleストアドプロシージャREFCURSORおよび出力パラメータにアクセスします
NHibernateの現在のバージョン(v2.1.2)は、出力パラメータに加えて、Oracleストアドプロシージャの出力REFCURSORへのアクセスをサポートしていますか?
コードを使用して、出力refcursorに正常にアクセスできます。ただし、同じストアドプロシージャで追加の出力パラメータにアクセスできるかどうかはわかりません。
構文の呼び出しのサンプルをいただければ幸いです。ありがとう。
c# - C# - 出力 SqlParameter は、指定された値とは異なる値を使用しますか?
2 つの整数出力パラメーターを含むストアド プロシージャを実行する SqlCommand があります。SqlCommand が実行される直前に、出力パラメーターが正しい値に設定されていることがわかりますが、コマンドが実際に実行されると、パラメーターの設定に関係なく、パラメーター 1 に NULL が使用され、パラメーター 2 (SQL プロファイラーを使用して検証されます) に 0 が使用されます。 .
コードの簡略化されたバージョンは次のとおりです。
私はここで2つの異なることに混乱しています:
1) パラメータの値を使用しないのはなぜですか? 直前にブレークポイントを配置command.ExecuteNonQuery()
して、command.Parameters リストに出力パラメーターが正しく設定されていることを確認できますが、クエリが実行されると、SQL プロファイラー トレースには異なるパラメーターが含まれます。
2) 両方のパラメータは整数であり、まったく同じ方法で定義されています - なぜ一方が NULL に設定され、もう一方が 0 に設定されているのですか??
linq-to-sql - LINQ To SQL ExecuteQuery のストアド プロシージャから出力パラメータを取得する
ストアド プロシージャを実行するときに、LINQ To SQL DataContext から出力パラメーターを取得することは可能ですか?
ここでaddress
、pageIndex
およびpageSize
は入力パラメーターであり、TotalCount
は出力パラメーターです。
どのように出力パラメータをキャプチャできますか?
これは別の試みですが、パラメータ値を取得できません。
c# - sproc を呼び出す LINQ を使用して、メソッドから var を返すにはどうすればよいですか?
私はしばらくの間働いていたこの方法を持っています
しかし、私が今本当に欲しいのは次のようなものです
slotString には複数の要素が含まれているためです。他の例を見ましたが、LINQ が sproc を呼び出す例はありませんでした。
どんな助けでも素晴らしいでしょう、idはとても感謝しています。
どうもありがとう
ティム