以下のコードは、すべての列の情報を取得する方法を示しています。 [tempdb]では、テーブル名は「____」で、下線がたくさんあることに注意してください。したがって、 "LIKE __%"としてアクセスする必要がありますが、これはうまくいくはずです。
ボーナスとして、行数を取得するコードを追加しました。
メモとして、私は通常単に "SELECT INTO .."し、テーブルをスクリプトアウトし、手動でテンポラリテーブルを作成します。しかし、以下のコードはあなたが望むもののために働くでしょう。
CREATE TABLE #test
(
[id] INT
, [name] NVARCHAR(12)
);
--
-- get columns and types
-------------------------------------------------
SELECT [columns].[name]
, [types].[name]
, [columns].*
, [types].*
FROM [tempdb].[sys].[columns] AS [columns]
JOIN [tempdb].[sys].[tables] AS [tables]
ON [tables].[object_id] = [columns].[object_id]
JOIN [sys].[types] AS [types]
ON [types].[user_type_id] = [columns].[user_type_id]
WHERE [tables].[name] LIKE N'#test__%';
--
-- get row count
-------------------------------------------------
SELECT [objects].[name] AS [table]
, [dm_db_partition_stats].[row_count] AS [row_count]
, *
FROM [tempdb].[sys].[dm_db_partition_stats] AS [dm_db_partition_stats]
INNER JOIN [tempdb].[sys].[objects] AS [objects]
ON [dm_db_partition_stats].[object_id] = [objects].[object_id]
WHERE [objects].[name] LIKE '#test%';
非常に良い!今私はSSMSで多くの作業をしていて、#testのような一時テーブルを定義したところで複数のウィンドウや接続を開いているとします。現在のウィンドウのインスタンスに適用する明確な方法はありますか? (あるいは私はこれを別の質問として投稿するべきですか?) – feetwet
私は実際に私のgithubリポジトリのプレゼンテーションを書くことを意味しています。あなたが示唆していることを試し、結果に驚かせてください。さらに、親プロシージャ内にローカル一時表を作成し、子プロシージャ内でアクセスしたり、子プロシージャ内で上書きしたりしてください。結果はあなたが期待するものではありません。しかし、これはこの問題の範囲を超えています。 –
私は地元の一時テーブル(継承行動)に関して私が持っているものを投げ捨てました。興味があれば、それを使って私が言及したシナリオを踏み出すことができるはずです。この副作用の動作を使用しないことをお勧めしますが、注意する必要があります。 https://github.com/KELightsey/chamomile/tree/master/presentation/temp_table_scoping –