T-SQL có loại SYSNAME để lưu trữ những thứ như tên bảng:
Các kiểu dữ liệu SysName được sử dụng cho các cột của bảng, các biến, và lưu trữ tham số thủ tục lưu trữ tên đối tượng. Định nghĩa chính xác của sysname có liên quan đến các quy tắc cho số nhận dạng. Do đó, nó có thể thay đổi giữa các phiên bản của SQL Server. sysname có chức năng giống nhau như nvarchar (128) ngoại trừ, theo mặc định, sysname là NOT NULL. Trong phiên bản trước của SQL Server, sysname được định nghĩa là varchar (30).
Vì vậy, cố gắng tuyên bố biến của bạn như thế này:
DECLARE @tableName SYSNAME;
Sử dụng tờ khai VARCHAR(100)
, như đề xuất trong câu trả lời khác, sẽ thất bại nếu các tên bảng chứa các ký tự bên ngoài trang mã hiện tại của bạn hoặc dài hơn 100 nhân vật.
trích đoạn này từ SQL Server rules for identifiers mô tả dưới dạng một tên bảng:
Ký tự đầu tiên phải là một trong những điều sau đây:
Một lá thư theo quy định của Tiêu chuẩn Unicode 3.2. Định nghĩa của các chữ cái Unicode bao gồm các ký tự La tinh từ a đến z, từ Từ A đến Z và cũng có các ký tự chữ cái từ các ngôn ngữ khác.
Dấu gạch dưới (_), tại ký hiệu (@) hoặc ký hiệu số (#).
Một số ký hiệu ở đầu số nhận dạng có ý nghĩa đặc biệt trong SQL Server. Số nhận dạng thông thường bắt đầu bằng dấu tại luôn biểu thị biến hoặc tham số cục bộ và không được sử dụng làm tên của bất kỳ loại đối tượng nào khác. Số nhận dạng bắt đầu bằng dấu số biểu thị bảng hoặc thủ tục tạm thời.Số nhận dạng bắt đầu bằng các dấu hiệu số kép (##) biểu thị đối tượng tạm thời toàn cầu . Mặc dù ký hiệu số hoặc ký hiệu số kép có thể được sử dụng để bắt đầu tên của các loại đối tượng khác, chúng tôi không đề nghị thực hành này.
Một số hàm Transact-SQL có tên bắt đầu bằng dấu hai chấm tại dấu (@@). Để tránh nhầm lẫn với các chức năng này, bạn không nên sử dụng các tên bắt đầu bằng @@.
ký tự tiếp theo có thể bao gồm những điều sau đây:
Letters theo quy định tại Tiêu chuẩn Unicode 3.2.
Số thập phân từ tập lệnh Basic Latin hoặc các tập lệnh quốc gia khác.
Dấu tại, ký hiệu đô la ($), ký hiệu số hoặc dấu gạch dưới.
Mã định danh không được là từ dành riêng cho Transact-SQL. SQL Server bảo lưu cả chữ hoa và chữ thường của các từ dành riêng.
Không gian được nhúng hoặc ký tự đặc biệt không được phép.
Các ký tự bổ sung không được phép.
Xem liên kết tài liệu trong câu trả lời của tôi để biết thêm thông tin.
Nguồn
2012-04-20 14:19:58
Nếu bạn khai báo biến là VARCHAR, bạn thực sự khai báo VARCHAR (1). Hãy thử VARCHAR (64) hoặc một cái gì đó để thay thế. – MatBailie
Tại sao 'chọn top 2 table_name từ INFORMATION_SCHEMA.TABLES theo thứ tự table_name asc' không đủ tốt? – Oded
@Oded: Bạn không thể 'PRINT' một tập hợp kết quả. Bạn có thể muốn in một tên bảng hơn là chọn nó nếu bạn đang viết một kịch bản tạo ra một kịch bản khác như đầu ra. –