これには、ストアド プロシージャ内で動的 SQL を使用することをお勧めします。
やりたいことは、一時テーブルのスキーマを理解することです。#nameoftemptable という名前の一時テーブルを作成すると仮定すると、これは開始に役立つはずです。
SELECT t.name, c.name as colname, types.name, types.max_length
FROM tempdb.sys.tables t
JOIN tempdb.sys.columns c on t.object_id = c.object_id
JOIN sys.types on c.system_type_id = types.system_type_id
WHERE t.name like '#nameoftemptable%'
「tempdb」の使用に注意してください。これは、一時テーブルが保存される場所です。これにより、一時テーブルのすべての列とそのデータ型が返されます。
次に、同様のクエリで同じデータを返す必要がありますが、tempdb をクエリする代わりに、データベース名とテーブル名をクエリする必要があります。
SELECT t.name, c.name as colname, types.name, types.max_length
FROM dbname.sys.tables t
join dbname.sys.columns c on t.object_id = c.object_id
join dbname.sys.types on c.system_type_id = types.system_type_id
where t.name = 'TableName'
ALTER TABLE
これで、どの列が新しいかを比較し、それに応じてコマンドを使用できるようになります。
これがお役に立てば幸いです。