問題タブ [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 に答える
891 参照

.net - ASP .NET からテーブルを更新するための動的 SQL

ユーザーがテーブルを選択し、そのテーブルでの CRUD 操作を許可したい ASP.NET 3.5 アプリケーションがあります。ユーザーは編集するテーブルの数に制限されますが、テーブルやデータベースでさえ展開後までわかりません。web.config は接続とテーブルをセットアップします。

そのため、SQL データベース内の汎用テーブルを更新できるようにするフレームワークを構築する必要があります。私が見た ORM のほとんどは、コンパイル時にスキーマを認識する必要があるため、これらを使用することはできません。最良の答えは、SQL クエリ文字列を動的に構築し、reg 式を使用して有効な入力を確保し、SQL インジェクションから保護することです。より良い方法はありますか?

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

sql - 変数からデータベースを選択する方法はありますか?

変数からデータベースを選択する方法はありますか?

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

sql-server - 列名が変数の場合、INSERT からのトリガーで列値を動的に検索する

ビューへの挿入と更新を取得するトリガーがあります。変更されている列を見つけて、正しいテーブルに値を取得する必要があります。

トリガーで、ID および [% Num] 列の値を取得する方法を理解しようとしています。問題は、挿入または更新に設定されている 32 の異なる列が存在する可能性があるため、その列が「挿入された」テーブルにあるかどうかを確認するためにループしたいことです。

問題の 1 つは、動的クエリを作成するために exec または execute を使用すると、insert が対象外になることです。

ビューは動的であり、属性が追加された場合、ストアド プロシージャによってビューが再生成されるため、特定の時点でビューに含まれる列名を推測することはできず、拡大および縮小する可能性があります。

理想的にはやりたいのですがSET @Value = (SELECT i.[@Name] FROM inserted i)、 @Name は列名ではなく、トリガーの変数なので、試したとき

挿入されたものが範囲外のように見えるため、これは機能しませんでした。

最初のループでは @Name = 'ID' で、2 番目のループでは挿入されなかった 'Col2' になるため、@Value の値は null である必要があり、終了するまで可能な列名をループし続けます。トリガーが処理されます。

私はこれをトリガーと呼んでいます。次のように定義されています。

現在、INSERT コマンドでテストしています。更新を行うときに、「削除された」テーブルを確認する必要がある場合があることに気付きました。

更新:これを機能させる方法を確認するために、テストのために、現時点で1行のみが挿入されていると想定しています。これはエンティティ属性値データベース用ですが、リレーショナルに見えるビューがあります。Integration Service を使用している場合、更新が進行中の場合、ビューへの挿入または更新によってトリガーが呼び出されます。正しいテーブルを正しい値で更新できるように、必要な情報を取得する方法を理解しようとしています。

0 投票する
6 に答える
13463 参照

tsql - ストアド プロシージャは、"IN" 句で使用される動的パラメーターを持つことができますか?

次のようなクエリを実行したい:

ただし、 IN 句に渡されるIdの量は、実行時にのみ決定されます。

動的 SQL を使用する必要がありますか、それともストアド プロシージャで実行できますか?

更新: どちらかのオプションが利用可能な場合、どちらが優れていますか?

ありがとう。

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

performance - 列名とテーブル名の両方が渡されたときにクエリを実行するにはどうすればよいですか?

変数のペアにテーブル名と列名が指定されている場合、動的 SQL を使用せずに選択クエリを実行できますか?

たとえば、これよりも優れたものが欲しいです。

私の動的SQLバージョンは非動的バージョンよりも3倍遅いため、これを行いたいと思います(プログラム可能なテーブル/列名をサポートしていないため、この質問です)。

0 投票する
5 に答える
30283 参照

oracle - 可変数のバインドが可能なOracle EXECUTE IMMEDIATE?

実行前に SQL で使用されるバインド変数の正確な数がわからない Oracle で動的 SQL 実行を使用する必要があります。

EXECUTE IMMEDIATEどうにかして呼び出しで可変数のバインド変数を使用する方法はありますか?

具体的には、不明な SQL に1 つのパラメーターを渡す必要がありますが、そこで使用される頻度はわかりません。

私は何かを試しました

しかし、それはORA-01008: not all variables bound.

0 投票する
5 に答える
4365 参照

sql-server - 動的 SQL の実行に代わる方法

現在、ビジネス オブジェクトに対応する「フィルタ」オブジェクトがあります。このオブジェクトには、そのようなビジネス オブジェクトのリストをフィルタリング/検索できるようにするさまざまな方法に関連するプロパティがあります。現在、これらの Filter オブジェクトには、WHERE 句の内容を作成するメソッドがあり、SQL Server 2000 ストアド プロシージャに渡されて残りの選択クエリと連結されます。最後の文字列は、Execを使用して実行されます。

現在、これは問題なく動作しますが、実行計画のキャッシュがないことによるパフォーマンスの問題が心配です。いくつかの調査では、 sp_executesqlの呼び出しの使用を見てきました。これはより良い解決策ですか、それとも私がやっていることについてより良い慣習がありますか?

更新: sp_executesql の使用に関する問題の一部は、フィルターのコレクションに基づいて、OR ステートメントのリストを生成する必要があることだと思います。「パラメータ化された」クエリが私の解決策になるかどうかはわかりません。

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

sql-server - 変数を使用したSQL使用ステートメント.

現在のデータベースを SQL ステートメントで切り替えようとしています。次のことを試しましたが、すべての試みが失敗しました:

  1. @データベース名を使用
  2. EXEC sp_sqlexec @Sql -- ここで @Sql = 'USE [' + @DatabaseName + ']'

もう少し詳細を追加します。

編集:両方が変数で構成されている2つの別々のデータベースでいくつかのことを実行したいと思います。このようなもの: