ini mungkin memberi Anda permulaan:
DECLARE @viewname VARCHAR(50);
SET @viewname ='tableorviewname';
SELECT c.name + ' '+ t.name +
case t.name
WHEN 'varchar' THEN '('+CAST(c.max_length AS VARCHAR(3) )+'),'
ELSE ','
end
FROM sys.columns c
INNER JOIN sys.types AS t ON c.system_type_id = t.system_type_id
WHERE object_id = (SELECT object_id from sys.objects where name = @viewname)
ORDER BY c.column_id
EDIT:TABEL TEMP:
tabel temp sedikit berbeda, misalnya ini berfungsi di sql 2008 untuk tabel temp bernama #tv_source
DECLARE @viewortablename VARCHAR(50);
SET @viewortablename ='tempdb..#tv_source';
SELECT c.name + ' '+ t.name +
case t.name
WHEN 'varchar' THEN '('+CAST(c.max_length AS VARCHAR(3) )+'),'
ELSE ','
end
FROM tempdb.sys.columns c
INNER JOIN sys.types AS t ON c.system_type_id = t.system_type_id
WHERE object_id = object_id(@viewortablename)
ORDER BY c.column_id
CATATAN:ini memberikan daftar yang dipisahkan koma, tetapi TIDAK mencoba untuk menghapus koma terakhir itu, ini hanya memberikan daftar, yang mungkin ingin Anda masukkan ke dalam string dan manipulasi, dll. Kemudian gunakan sebagai sql dinamis atau semacamnya. Namun, itu akan memberi Anda awal tentang apa yang ingin Anda lakukan.
CATATAN untuk orang lain, sql 2000 tidak akan menampilkan panjang dengan benar misalnya pada varchar (45), itu hanya akan mencantumkan bagian varchar dan saya tidak mencoba untuk mengerjakan ulang itu untuk pertanyaan ini.