điều này có thể giúp bạn bắt đầu:
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
CHỈNH SỬA:TEMP BẢNG:
bảng tạm thời hơi khác một chút, ví dụ như bảng này hoạt động trong sql 2008 cho bảng tạm có tên #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
LƯU Ý:điều này cung cấp một danh sách được phân tách bằng dấu phẩy, nhưng KHÔNG cố gắng xóa dấu phẩy cuối cùng đó, nó chỉ cung cấp một danh sách mà bạn có thể muốn đặt vào một chuỗi và thao tác, v.v. sau đó sử dụng như một sql động hoặc somthing. Tuy nhiên, nó sẽ giúp bạn bắt đầu những gì bạn muốn làm.
LƯU Ý đối với những người khác, sql 2000 sẽ không hiển thị độ dài chính xác, chẳng hạn như trên varchar (45), nó sẽ chỉ liệt kê phần varchar và tôi đã không cố gắng làm lại phần đó cho câu hỏi này.