問題タブ [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 投票する
5 に答える
217 参照

sql - SQLを使用して動的なInステートメントを作成する

selectクエリを実行するために3つのブール条件をチェックする必要があるとします。3つのフラグを「A」、「B」、「C」とします。

3つのフラグがすべて「1」に設定されている場合、生成されるクエリはSELECT * FROM Food WHERE Name In('Apple、' Biscuit'、' Chocolate');です。フラグ「A」と「B」のみが「1」に設定され、Cが「0」に設定されている場合。次に、次のクエリが生成されます。

それを行うための最良の方法は何ですか?

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

sql-server - ユーザー関数内の別のデータベースからテーブルへの動的アクセス

別のデータベースのいくつかのテーブルを含むいくつかのテーブルからのデータを集約するSQLServerのユーザー定義テーブル関数があります。これはクエリでデータベースの名前をハードコーディングして行われますが、データベース名を構成可能にしたいです(データベースは通常、他のアプリケーションのデータベースとサーバーを共有しているため)。

構成テーブルに格納されているデータベース名を使用して、関数内に動的クエリ文字列を作成しようとしましたが、次のようになりました。

  1. exec(@sqlStatement)SQL Serverを試したところ、関数内で文字列の実行は許可されていないと言われました。
  2. 次に、試しexec sp_executesql @sqlStatementて関数を作成しましたが、実行すると、SQL Serverは、関数内では拡張関数とプロシージャしか実行できないと言っています。

したがって、問題は、データベース名が異なる場合に関数を再作成することなく、別のデータベースのテーブルにアクセスする関数またはストアドプロシージャを作成できるかどうかです。

TIA。

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

sql - 変数の動的SQLステートメントを通常のステートメントと結合する方法

動的に構築され、変数に保存される非常に複雑なクエリがあります。

2番目の部分として、別の通常のクエリがあり、これらの両方の間に内部結合を作成したいと思います。

ここでもう少し簡単にするために、私の問題を説明するための小さな例を示します。
この小さな例では、AdventureWorksデータベースを使用しました。

一部のクエリは動的に構築されます

(はい、ここには動的なものは何もないことを知っています。これは単なる例です。)

私が持っている通常のクエリ

多分私が欲しいのにうまくいかない

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

debugging - MS SQLServer2008での動的SQL+動的テーブルのデバッグ

動的SQLを使用する厄介なストアドプロシージャがあります。

を呼び出す直前に、動的SQLを含む文字列がprint @sql;どこにあるかを追加することで、実行時にデバッグできます。@sql;execute (@sql);

現在、複数ページのストアドプロシージャも動的テーブルを作成し、クエリで使用します。クエリを実行する直前にこれらのテーブルをコンソールに出力しexecuteて、クエリが何をしようとしているのかを正確に把握したいと思います。

ただし、SQLServer08はそれを好みません。私が試してみると:

print #temp_table;SPをコンパイルしようとすると、次のエラーが発生します。


このコンテキストでは、「#temp_table」という名前は許可されていません。有効な式は、定数、定数式、および(一部のコンテキストでは)変数です。列名は許可されていません。


助けてください。

編集:

SQLに関しては、私は初心者です。ただし、次のステートメントは次のとおりselect * from #tbl;です。非対話的に実行されている場合、コンソールには何も出力されません。ただし、printステートメントは機能します。

次のステートメントの構文が正しくありませんprint select * from #tbl;。stdoutがオプションでない場合、selectの出力をファイルにリダイレクトする方法はありますか?

ありがとう。

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

sql - 列名を生成する動的 SQL?

行の値を列名にピボットしようとしているクエリがあり、現在SUM(Case...) As 'ColumnName'、次のようなステートメントを使用しています。

上記のクエリはうまく機能し、必要なものを正確に提供してくれます。SUM(Case...ただし、次のクエリの結果に基づいて、手動でステートメントを書いています。

ストアド プロシージャ内で T-SQL を使用して、クエリSUM(Case...からステートメントを動的に生成し、結果の SQL コードを実行する方法はありますか?Select Distinct Sku2 From OrderDetailDeliveryReview

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

sql - この T-SQL コードでは何が起こっているのでしょうか? (SELECT文の結果の連結)

私は T-SQL を学び始めたばかりで、特定のコード ブロックで何が起こっているのかを理解するのに役立つかもしれません。以前の質問で受け取った回答の一部のコードを変更しました。問題のコードは次のとおりです。

T-SQL コードは、クエリの結果に基づいて 1 つの結果を作成し、それを別のクエリで使用するという、まさに私が望んでいることを実行します。

SELECT @column_list =...ただし、ステートメント内にあることで、ステートメントが複数の値を単一の文字列に入れる方法を理解できませんSELECT。への代入がなければ@column_listSELECTステートメントは単純に複数の行を返します。SELECT結果が 1 つの値に "平坦化" されるというステートメント内に変数を含めることは、どのように行われるのでしょうか? 何が起こっているのかを正しく理解するには、この T-SQL をどのように読むべきですか?

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

oracle - Oracleの動的SQLから結果セットで結果を取得する

この質問は、StackOverflowで見つけた他のいくつかの質問と似ていますが、その違いは、新しい質問を正当化するのに十分なほど重要なので、ここにあります。

Oracleの動的SQLから結果セットを取得し、動的SQLステートメントを直接実行したかのように、それをSqlDeveloperのようなツールに結果セットとして表示したいと思います。これはSQLServerでは簡単なので、具体的には、SQL ServerManagementStudioまたはクエリエクスプローラーで結果セットを返すSQLServerの例を次に示します。

またはより適切に:

「動的SQLを実行するOraclePL/SQL匿名ブロックから結果セット/カーソルを返す方法」という質問。問題の前半、つまり動的SQLをカーソルに実行することで対処します。「Oracleプロシージャが結果セットを返すようにする方法」という質問でも、同様の答えが得られます。Web検索により、同じテーマの多くのバリエーションが明らかになりました。これらはすべて、私の質問の前半にのみ対応しています。この投稿を見つけましたSqlDeveloperでそれを行う方法を説明しますが、それはSqlDeveloperの機能のビットを使用します。私は実際にカスタムクエリツールを使用しているので、SQLコードに自己完結型のソリューションが必要です。このカスタムクエリツールにも同様に、print(dbms_output.put_line)ステートメントの出力を表示する機能はありません。結果セットのみを表示します。これは、「executeimmediate ... Bulkcollect」を使用するもう1つの可能な方法ですが、この例でも、dbms_output.put_lineステートメントのループを使用して結果をレンダリングしますこのリンクはトピックに対処しようとしますが、質問はそこでも完全に答えられることはありませんでした。

これが可能であると仮定して、もう1つの条件を追加します。関数やプロシージャを定義せずにこれを実行したい(DB権限が制限されているため)。つまり、動的SQLを含む自己完結型のPL / SQLブロックを実行し、SqlDeveloperまたは同様のツールで結果セットを返したいと思います。


要約すると:

  • 任意のSQLステートメント(したがって動的SQL)を実行したい。
  • プラットフォームはOracleです。
  • ソリューションは、プロシージャや関数のないPL/SQLブロックである必要があります。
  • 出力は、正規の結果セットとして生成する必要があります。印刷ステートメントはありません。
  • 出力は、SqlDeveloperの特別な機能を使用せずに、結果セットとしてSqlDeveloperでレンダリングする必要があります。

助言がありますか?

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

sql-server - Adventureworks テーブルをクエリするための動的 SQL

Sql Server 2008 の "Person" スキーマから Adventureworks DB のテーブルの一覧を表示しようとしています。次の SP を開発しましたが、次のように実行すると、"Incorrect syntax near ')'" というエラーが表示されます。この SP または exec ステートメントを修正する方法を知っていますか?

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

xml - xml に属性を挿入するときに、「xml データ型メソッド "modify" の引数 1 は文字列リテラルでなければなりません」を取得する

次のコードを試しています。しかし、「xml データ型メソッド "modify" の引数 1 は文字列リテラルでなければなりません」というエラーが発生します。たくさん検索しましたが、この問題の解決策が見つかりません

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

.net - .Net 用の動的な Sql ビルダー ライブラリはありますか?

このようなもの。

http://code.google.com/p/squiggle-sql/wiki/Tutorial

これは、UI からのユーザー入力から複雑な SQL を構築する必要がある場合に必要です。現在、私が取り組んでいるプロジェクトでは、見栄えが悪く、保守が難しい文字列操作を使用しています。