問題タブ [table-variable]
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 - SQL Serverでテーブル変数が空かどうかを確認するにはどうすればよいですか?
これは、私のストアドプロシージャの1つのセクションです。
@dataInTable IS NULL
構文が間違っている、エラーは
スカラー変数「@dataInTable」を宣言する必要があります
だから私はそれを次のように変更します:
これは機能しますが、@dataInTable
複数のアイテムがある場合、エラーが発生します。
サブクエリは複数の値を返しました。サブクエリが=、!=、<、<=、>、> =の後に続く場合、またはサブクエリが式として使用される場合、これは許可されません。
理解できるので、次のように変更します。
完璧に動作します。私が持っているのはパフォーマンスの問題です。
テーブル変数が空かどうかを確認する簡単な方法があるかどうか疑問に思っています。
sql-server-2008 - SQL Server 2008 - UDF パラメーターの型と戻り値の型
SQL 2008 で UDF を作成しているときに、よく次のことに出くわします。次の仮定が正しいか間違っているか教えてください。
- UDF はデータ テーブルを返すことができます。
- ただし、UDF はデータ テーブルをパラメーターとして受け取ることはできません。
- UDF は、User-Defined-Table-Type (UDTT) をパラメーターとして受け取ることができます。
- ただし、UDF は User-Defined-Table-Type (UDTT) を返すことはできません。
sql-server-2008-r2 - 一時テーブルよりも高速にテーブル変数を使用しています
を使用して一時テーブルを作成するストアドプロシージャがある場合、tempdb
パフォーマンスを向上させるために、これらをテーブル変数に切り替える方がよいと思いますか?
sql-server-2008 - SQL Server2008R2でのテーブル変数の作成
テーブル変数とは何ですか?また、既存のストアドプロシージャの結果セットと一致する列を持つテーブル変数(仮想メモリ内テーブル)を作成する方法。
プロシージャを実行し、実行した後、列名がわかりました。しかし、ストアドプロシージャと同じデータ型の列を宣言する必要がありますか?
編集:私はこれを試しました
sql - SQLデータベーステーブルとしての可変量のセット
特定の問題のデータベースモデルに関する質問の詳細。問題は次のとおりです。
固定テーブルの行を構成するオブジェクトがいくつかありますが、それらはすべて別個のものです(もちろん)。これらの保存されたオブジェクトの可変量を含むセットを作成したいと思います。これらのセットはユーザー定義であるため、ハードコーディングは行われません。各セットは番号で特徴付けられます。
私の質問は、経験豊富なSQLプログラマーがそのような機能を実装するために私にどのようなアドバイスを与えることができるかということです。私の最も直接的なアプローチは、テーブル変数または一時テーブルを使用して、そのようなセットごとにテーブルを作成することです。最後に、セットの名前を含む既存のテーブル(データベースに現在存在するセットをユーザーに知らせる方法として)。
効率的でない場合、これを解決するためにどの方向を検討しますか?
ありがとう。
sql-server - テーブル変数を参照するときの「スカラー変数を宣言する必要があります」エラーを修正する方法は?
理由がわかりません(または、これができないだけかもしれません)スコープ外エラーが発生します
スカラー変数「@CompanyGroupSites_Master.
つまり、カーソル内でこの方法でテーブル変数にアクセスできないのでしょうか、それとも、カーソル本体内から参照するときにそのテーブル変数をスコープ外に保つ単純なものを見逃したに違いありませんか?
sql - PostgreSQL テーブル変数
T-SQL にテーブル変数のようなものはありますか?
Sql Server では、次のようになります。
次に、手順で次のことができます。
そして、この変数を通常のテーブルのように操作します。
ここに説明があります:http://odetocode.com/Articles/365.aspx
sql - UDF で INSERT - EXEC [ストアド プロシージャ] ステートメントを使用すると、副作用のエラーがスローされるのはなぜですか?
N 行を返すストアド プロシージャを呼び出し、処理の一環として結果を一時テーブルに挿入する必要がある関数に取り組んでいます。
ストアド プロシージャで EXEC を呼び出すと問題なく動作します: http://sqlfiddle.com/#!3/ed11a/16
では、EXEC の結果をテーブル変数に挿入するとエラーが発生するのはなぜですか: http://sqlfiddle.com/#!3/ed11a/18
私が得ているエラーは次のとおりです。Invalid use of side-effecting or time-dependent operator in 'INSERT EXEC' within a function.
このエラーは通常、関数に対してローカルではない値を操作しようとしたときに生成されることを理解していますが、挿入はテーブル変数に対して行われるため、これは問題になりません。
sql-server - SQLServer2012でデバッグするときにテーブル変数の内容を表示する
監視ウィンドウでは、SQL Server 2012でデバッグしているときに、通常の変数の値を確認できます。特別なウィンドウでxmlを確認でき、SQL文字列と同じですが、テーブル変数の場合は(table)とだけ表示されます。
その時点でそのテーブル変数の内部を覗いて内容を確認する方法があるかどうかを本当に知りたいです。
編集:
Visual Studio(長い間)には、Xml、Html、およびTextと一緒に「テーブル」ビジュアライザーがあることを発見しました。これはここでは役に立ちませんが、非常に実行可能な機能であるという私が最初に述べた点を強調しています。一般的に、SQLServerSSMSチームとVisualStudioチームには非常に失望しています。レドモンドのVisualStudio開発者は、5年ごとにSSMSチームで2〜3回のスプリントの「任務のツアー」を行うように強制されるべきだと思います。彼らがそうすれば、彼らはそれをすっごく助けることができます。
ありがとうございました。
sql-server - サブクエリ X 一時テーブル X 動的 SQL X テーブル値関数
アイテムの多くの情報を要約したビューがあります。v_item_details としましょう。
このビューは再帰的な cte によって定義され、適切なフィルタリングが適用されないと非常に遅くなる可能性があります。基本的に、アイテム ID のリストを提供すると、スムーズに実行されます。したがってSELECT * FROM v_item_details WHERE item_id IN(1,2,3)
、1秒未満で実行されるようなものです。
別のテーブルで定義されているアイテムのグループのアイテムの詳細を取得しようとすると、事態が複雑になります。SELECT * FROM v_item_details WHERE item_id IN (SELECT item_id FROM items WHERE group_id = 1)
group_id がインデックス化されていて、サブクエリが前のクエリと同じ item_id (1、2、および 3) を返す場合でも、クエリには 1 分以上かかります。
テーブル変数を作成し、そこにサブクエリの結果を挿入して結合しようとしましたが、それでも 1 分以上かかりました。
次に、item_id をパラメーターとして受け取るテーブル値関数でビューをラップし、クロス適用を実行して、単純な選択と同じプランを強制的に実行しようとしましたが、4 分以上かかりました!
現在、ID を選択して高速サブクエリを実行する動的クエリを使用しています。しかし、それは最適ではありません。なぜなら、私はストアド プロシージャに行き詰まっており、さらに操作できるビューではないからです。
SQL に最初にサブクエリの値を選択させ、次に高速サブクエリを実行させる方法について何か考えはありますか? LOOP 結合クエリ ヒントを使用するとうまくいくと思いましたが、サブクエリから始まるループは実行されましたが、ビューのクエリ プランは高速クエリと同じではなかったため、うまくいきませんでした。パフォーマンスの問題。
よろしく、 カルロス・ジョルダン