問題タブ [table-valued-parameters]

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.

0 投票する
0 に答える
200 参照

sql-server-2008 - 「非静的」検索語による全文検索 (結合されたテーブル変数から)

(そして実際に考えます:))誰かがすでに同様の問題を抱えていて、それを解決したことを願っています..

簡単に言えば、基本的な問題..「単語検索」機能と関連データの使用は近い将来急速に成長するため、私たち(その場合は私を意味します)は全文検索を使用するように変更する必要があります..

そのため、すべてのセットアップが完了しました..しかし、クエリ構文を機能させることができません(以下の簡略化されたバージョン)

where句ははるかに大きな句の一部です..推測すると、「CONTAINS」句には一種の「静的」検索語入力が必要で、行依存の値を処理できないと思います..

msdnにもここにも何も見つかりませんでした..

主な問題の 1 つは、「base_questions」が固定されておらず、変更される可能性があり、検索条件 (どの用語を検索するか) が完全に動的であることです..そのため、switch-case やそのようなものはありません..動的SQLも実際にはオプションではありません(さまざまな理由がありますが、それはこの質問の範囲をはるかに超えています:) ..)

ただし、このデータベースへのすべての検索は、スカラーおよびテーブル値のパラメーター ( @searchValues など) を使用してストアド プロシージャを介して行われます。何らかの形で可能であれば、そのままにしておきたいと思います。

ヒント、ヒント、提案は大歓迎です

参考までに、簡略化された db-structure の完全性の短いバージョン:

回答( id bigint (PK)、item_id uniqueidentifier (FK)、base_question_id uniqueidentifier (FK)、nvarchar(max))

base_question ( id uniqueidentifier (PK), code varchar(900), question_type_id (FK), .. 記述内容 .. )

item ( id uniqueidentifier (PK), .. 記述内容 .. )

.. db 構造を変更して、検索のパフォーマンスを向上させ、再び機能させることもできます ;) .. (現在、約 120k の item_id と約 2.5 ミリオの回答がありますが、それは簡単に 10 倍以上に増加します)

0 投票する
2 に答える
5281 参照

c# - SQLサーバーのユーザー定義テーブルタイプがすべての列のデフォルト値がnullに設定されている場合に、列の少ないDataTableをストアドプロシージャに渡す方法

ユーザー定義のテーブル型を受け入れるストアド プロシージャがあり、ユーザー定義のデータ型のすべての列の既定値が null に設定されています。現在、残りの列の値がnullに設定されることを期待して、列が少ないdataTableをC#コードからストアドプロシージャに渡しています。

しかし、私はこのエラーが発生しています:対応するユーザー定義のテーブル型が 77 列を必要とする 21 列のテーブル値パラメーターを渡そうとしています。これがコードです

0 投票する
1 に答える
2173 参照

sql-server-2005 - SQL Server テーブル値関数パラメーター

次のテーブル値関数を取得しました (SQL Server 2005)。--1 を実行するとコンパイル エラーが発生しましたが、-3 は問題ありません。--3 で使用されるパラメーターを生成するために --2 が使用されます。これは --1 と同じである必要があります。しかし、なぜ --1 がエラーになったのでしょうか?

0 投票する
1 に答える
548 参照

sql - TSQL テーブル値関数の最適化に助けが必要

関数は次のとおりです。

一言で言えば、これが何をするかです:

最初に、これまでに受け取った、または移動した最初のアイテムを見つけ、その日付を開始日として使用します。次に、そのアイテムの総売上を見つけ、売上から受け取り金額を差し引きます。残りは熟成された (販売されていない) と見なされ、翌月に対して評価されます。次に、次の月に移動し、負の数または 0 になるまでプロセスを繰り返します。負の数に達すると、これまでに販売された数より多くの注文をした月に達したことを意味し、その金額は期限切れと見なされます (販売していません)。評価する月がさらにある場合、FURTHER の受領金額は、明らかに販売されていないため、デフォルトで期限切れと見なされます。

評価に使用したテーブルのサンプル データを次に示します。

上記のデータに対する私の関数の結果は次のとおりです。

これは、4 月に受け取ったものをすべて販売したことを示しています。5月に再発注し、売れたものの在庫が余っている(経年)。その後、7 月に在庫を売り切れずに再度注文したため、その在庫は自動的に古くなっていると見なされます。

この関数の目的は、上で起こったことを止めることです。古くなった(売れ残った)在庫のある商品を注文することです。また、部門のどの程度が古くなっているかを評価し、古くなったアイテムを取り除くためにセールを開始する必要があるかどうかを評価するためにも使用されます。

問題は、評価する項目が 40,000 件もあるということです。この関数は、単一のアイテムの場合はうまく機能しますが、100 個のアイテムの場合は 30 秒かかります。誰かが長い間来て、私の機能を見て、私がそれを完全に間違った方法で行っていることに気付くことを願っています. インライン計算を実行し、残りを繰り越すことができれば、それは素晴らしいことです。

基本的に、簡略化された疑似コードでこれが必要です。

今回は自分自身を徹底的に説明したことを願っています。長くなってすみません。前回の投稿で私が持っていたすべての質問をカバーしたかっただけです。

0 投票する
1 に答える
10322 参照

c# - ストアド プロシージャのパラメータとして byte[] フィールドを持つ DataTable

DataTable をストアド プロシージャのパラメーターとして使用するこの方法を再利用してきましたが、うまく機能しています。これは単純化された作業コードです。

追加したいフィールドがバイナリ型の場合に問題が発生します。すなわち:

ちなみに、データベースの対応する列はvarbinary(MAX)です。これを実行しようとすると、次のエラーが発生します。

データ型 nvarchar(max) から varbinary(max) への暗黙的な変換は許可されていません。CONVERT 関数を使用して、このクエリを実行します。

これを機能させるために必要なものを変更するにはどうすればよいですか?

0 投票する
0 に答える
59 参照

sql - テーブル値パラメーターで「LIKE」を使用したサブクエリを使用して存在チェックを行う

Excelからデータベースにインポートしています。一連の値を持つテーブル値パラメーターを渡していますが、そのうちの 1 つは外部キーです。問題は、データベースのキー値のnvarchar前に常に 2 つまたは 3 つのゼロがあることですが、Excel ファイルを送信した人が列を適切にフォーマットしておらず、先頭のゼロが切り取られていることです。

手順で最初に行う必要があるのは、これらの値がすべて親テーブルに存在することを確認することですLIKE(先頭のゼロがないため)。いずれかの値が親テーブルに存在しない場合、トランザクションは続行されません。

これについては、MS SQL 構文に関するヘルプが必要です。

0 投票する
1 に答える
691 参照

sql-server - テーブル値パラメーターを渡すときに一時的なユーザー定義のテーブル型を整理または回避する方法

ここで説明したように: List<> を SQL ストアド プロシージャや他の多くの場所に渡す場合、パラメーターとしてテーブルを渡す 1 つの方法は、SqlParameter を使用することです。

これに関する問題は、TypeName プロパティでユーザー定義テーブル タイプを指定する必要があることです。

Excel ファイルからデータをロードし、それをパラメーターとして SQL ステートメントに渡す必要があります。SQL ステートメントは、このデータを他のデータベース テーブルと結合して結果を取得します。

そのためには、Excel ファイルのバリエーションごとにユーザー定義テーブル タイプを作成する必要があります。各 Excel ファイルからデータを渡すためだけに使用される型で SQL 型を汚染したくありません。どうすればそれを達成できますか?

タイプがわからないものに参加するにはどうすればよいかという質問があるかもしれませんが、その答えは、一部のフィールドの名前とタイプは知っていますが、すべてではないということです。また、select * を使用して結合されたデータを返したい場合は、すべてのフィールドをタイプ内にハードコーディングしなくても、フィールドのリストで機能します。

OPENROWSET を使用してこのファイルを SQL から直接結合することはできません。これは、64 ビットの SQL Server を使用しており、奇妙なエラーが発生して動作しないためです。

SQL Server には一時テーブルの概念がありますが、一時型の概念はありません。一時型をシミュレートしたり、テーブルを渡すときに使用しないようにするにはどうすればよいですか?

データを XML として渡すこともできますが、データ サイズが十分に大きく、さらにデータ サイズが 2Gb に制限されていると、効率が低下するようです。

それを整理する 1 つの方法は、型を作成してからステートメントを実行し、その後で型を削除するか、TRY..CATCH を使用して型を catch 内に削除することです。

もう 1 つは、特別なスキーマを作成し、一意の型名をそのスキーマに生成し、ガベージ コレクション SQL ジョブを使用して時々クリーンアップすることです。また、残り物をきれいにするために、最初の方法と組み合わせて使用​​ できます。

他の提案はありますか?

0 投票する
1 に答える
407 参照

sql - t-sql のサブクエリを含む Where 句は、各行のデータを照会しますか?

サブクエリで関数を使用する t-sql でクエリを作成していて、2 つの質問に遭遇しました。次のような広告テーブルを想像してください。

次のようなオプション テーブル:

そして、2 つの外部キー列を持つこれら 2 つの間のジャンク テーブル (AdvertisementOptionLink) :

ユーザーがオプションを選択すると、広告を照会したいと思います。私は次のようなクエリを書きました:

現在、UDF_GetAdvertisements は、特定のオプションを持つ広告のリストを返すテーブル値関数です。

2 つの質問があります。

  1. この UDF_GetAdvertisements 関数は、各行のすべてのデータをクエリしますか? つまり、テーブルに 2000 件の広告がある場合、それらすべてをクエリしてすべての広告 ID を返すということですか? 関数の戻り値を変数に保存したほうがよいでしょうか?

2.このデータベースには、オプションのない広告がいくつかあります。ユーザーがオプションを選択しない場合、どのようにすればすべての広告を返すことができますか?

t-sql でテーブル値パラメーターを使用して、選択したオプション ID をストアド プロシージャ経由で渡します。このページから少し助けを借りました: http://www.sommarskog.se/arrays-in-sql-2008.html

0 投票する
3 に答える
10012 参照

entity-framework - EntityFrameWork および TableValued パラメータ

テーブル値パラメーターを使用するEntityFrameworkからストアド プロシージャを呼び出そうとしています。

しかし、関数のインポートを行おうとすると、次のような警告メッセージが表示され続けます-

関数 'InsertPerson' には、パラメーター インデックス 0 にパラメーター 'InsertPerson_TVP' があります。このパラメーターは、ターゲットの .NET Framework バージョンで現在サポートされていないデータ型 'テーブル タイプ' を持っています。関数は除外されました。

ここで最初の検索を行ったところ、EntityFrameWork でいくつかの回避策が可能であり、現在のバージョンではサポートされていないと言う投稿はほとんど見つかりませんでした。

この問題に対するより良いアプローチまたは解決策を知っている人はいますか?

0 投票する
2 に答える
3239 参照

visual-studio-2012 - sql71501 sql パラメーターには組み込み型への未解決の参照があります

VS2012からデータベースプロジェクトを作成し、広告カスタムタイプを作成しました

この型を使用してストアド プロシージャを記述すると、コンパイル エラーが発生します。

sql71501 sql パラメーターには組み込み型への未解決の参照があります

手順

これをどのように処理しますか?Visual Studio データベース プロジェクトでカスタム タイプを作成できますか