問題タブ [dynamic-sql]

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 投票する
2 に答える
1438 参照

sql-server - MSSQL - 列名が動的な場合のデータの表示

従業員の最終権限評価スコアを提示しています。各行は従業員のデータであり、評価されるカテゴリは期間ごとに変わる可能性があるため、ストアド プロシージャで列名をハードコーディングすることはできません。私はすでに次の解決策を考案しました。

1 一時テーブルを作成する
2 Alter Table コマンドを動的に使用して、該当するすべての列を追加する (@ColumnNames に格納される)
3 カーソル内で動的 SQL を使用して、正しいスコアを取得する各従業員の挿入を書き込む (IE N の従業員は N の挿入を意味する)

問題は、100 人の従業員ごとに約 1 秒かかることです。これはすぐに受け入れられなくなります…</p>

続行する方法について、より良いアイデアを持っている人はいますか? カーソルを (明らかに) 削除し、1 つの挿入 (おそらく Select into) を使用することは、おそらく動的に作成された XML 変数から読み取る最初のアイデアです…</p>

ありがとう、

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

oracle - Oracle: 名前と値のペアをテーブルにフラット化する

この問題に対処するためのより簡単な方法について、誰かがアドバイスを提供できることを願っています。高度に正規化されたデータ セットのフラット ビューの作成に取り組んでいます。フラット化の目的は、通常の人がレポート作成に使用できるビューを提供することです。ソース データには、次に示すようにいくつかのテーブルが含まれています。

レコード値テーブルの variable_id は、アドレスや口座残高など、元の入力ストリームの変数の 1 つに対応します。12 個の変数を含む入力レコードの場合、レコード値テーブルには 12 行あります。

元のプロセスへの入力には、さまざまな幅と変数名のレコードが含まれます。これらは、record_values テーブルで名前/値のタプルに分割されます。変数を次のようなレコードに再構築する手順を書いています

私の現在のアプローチは、指定された一連の実行の一意の変数を見つけてテーブルを動的に構築し (詳細はここでは重要ではありません)、テーブルを作成する SQL 文字列を構築することです。

私の課題は、元のデータからこの結果の作業テーブルを効率的にロードする方法です。変数の名前と数は run_id によって異なるため、これにアプローチするために私が考えることができる唯一の方法は、次のようなものです。

親テーブルには数億の行があるため、これは永遠に実行されます。

目的の行ごとに 1 つの更新を行うために使用できるアプローチを生成する方法について、誰かが考えを持っていますか?

元のテーブルの設計に飛びつく人がないように - このようにするビジネス上の理由がありました。私はそれが好きではありませんが、そうするのには十分な理由がありました。

ご意見をお寄せいただきありがとうございます。

アンドリュー

0 投票する
4 に答える
10280 参照

sql - SQL の質問 .. SQL クエリの結果セットに列を動的に追加するにはどうすればよいですか?

データベース内のオブジェクト (「ファイル」) に関する詳細を返すレポートを作成しています。私のアプリケーションでは、ユーザーがファイル オブジェクトに対して使用する独自のフラグを作成できます。フラグは基本的に名前で構成され、フラグ インスタンスは親ファイル オブジェクトに設定されているかどうかを示すビット値を格納します。

データベース内のファイルごとに 1 行を返すクエリを作成したいと考えています。結果セットの最初の数列にはファイルの詳細 (ID、名前、サイズなど) が含まれ、残りの列はフラグ名であり、ビット値が返されます。特定のファイル行にフラグが設定されているかどうかを示します。

それは理にかなっていますか?クエリを作成するにはどうすればよいですか?

助けてくれてありがとう。

編集:明確化..

このクエリの一部として、ユーザーによって作成されたフラグを返すサブクエリを実行する必要があります (設計時にはわかりません)。次に、メインクエリに各フラグ値のチェックを組み込み、詳細を返します。ファイルについて。

簡略化されたスキーマは次のとおりです。

  • ファイル {ID、名前}
  • フラグ {ID、名前}
  • FileFlags {FileId, FlagId} - このテーブルの行は、ファイルにフラグが設定されていることを示します

次のような列を含む結果セットを返すクエリが必要です。

FileId FileName Flag1Name Flag2Name .... FlagNName

0 投票する
10 に答える
319783 参照

tsql - sp_executesql の結果を変数に取得する方法は?

実行する必要がある動的 SQL があり、その結果を変数に格納する必要があります。

使用できることはわかってsp_executesqlいますが、これを行う方法についての明確な例が見つかりません。

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

sql-server-2005 - T-SQLで実行する前に動的SQLを解析するにはどうすればよいですか?

クエリを解析して、実行する前に適切にビルドされているかどうかを確認する方法を知る必要があります。解析が正しい場合は実行し、そうでない場合は破棄します。

SET NOEXEC、SET PARSEONLY、TRY/CATCHを使用してこれを達成することはできませんでした。

ループ内で動的SQLを使用しています。動的SQLは、私のせいではなく、データベースに存在する情報に対して正しくない場合があります。このため、実行前に解析したいと思います。

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

tsql - SQL Server 2008 関数でテーブルの列定義を動的に生成する方法

SQL Server 2008 では、動的に生成されたテーブルを返す必要があり、列も動的に生成されます。

1 つの ID から始めて、列の名前と型を取得したため、これがすべてクエリによって生成されました。これがキャストの理由です。

以下は、ある状況で必要なテーブルを返す最終的なクエリですが、この同様のクエリを使用して複数のテーブルを返すことができます。

これは現在 C# で実装されていますが、ストアド プロシージャまたは関数で実行できるはずですが、このクエリを作成してテーブルを返すために複数のクエリを作成する方法がわかりません。

ありがとうございました。

更新: 車のメーカーを含むテーブルがあり、GM 製の車のすべての属性が必要な場合。車の情報を検索し、それを使用してすべての自動車メーカー (GM) を取得します。次に、GM によって製造されたすべての車の情報を取得したいのですが、情報が動的に生成されているため、列異なっています。それが私がいる場所で、このテーブルを動的に生成する必要があります。Web サービスを呼び出すだけで、動的に生成されたクエリを取得し、ストアド プロシージャまたは関数でそのクエリを実行できるかどうかに興味があります。

更新 2: この表を取得した後の次のステップは、車の実際の価格を決定するために、車のすべてのオプション (この場合) を合計する必要があることです。そのため、表形式にする必要があります。この時点で、GM 製の車を見ていますが、SeaRay 製のボートに対して別のクエリを実行することもできます。クエリは、ボートのテーブル列が車とは異なっていても同じように機能するはずです。

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

sql - このクエリを EXECUTE IMMEDIATE で実行すると失敗するのはなぜですか?

いくつかのクエリを動的に生成する必要がある PL/SQL プロシージャを作成しています。そのうちの 1 つは、パラメータとして取得されたクエリの結果を使用して一時テーブルを作成することです。

正しくコンパイルされますが、次のような非常に単純なクエリでも使用できます。

それは投げORA-00911: invalid characterます。作成したクエリを手動で実行すると、正しく実行されます。この時点で、問題の原因を特定できます。

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

sql - トリガー ダイナミックの作成

MS SQL 2008 を使用しており、動的に作成されたデータベースにトリガーを作成したいと考えています。

データベースの作成は、別のデータベースのストアド プロシージャ内で呼び出され、完全に実行されますが、トリガーまたはストアド プロシージャを追加したい場合、実行に失敗します。

動的SQLを実行しようとすると

私は得る:

「GO」付近の間違った構文

「USE ...」を削除すると、トリガーが間違ったデータベースに作成されます。

私の問題を回避するためのトリックはありますか?

どうも