Tôi đang cố gắng điền bảng tạm thời dựa trên kết quả của điều kiện trong SQL 2005. Bảng tạm thời sẽ có cùng cấu trúc theo cách, nhưng sẽ được điền bằng cách sử dụng một truy vấn khác tùy thuộc vào điều kiện. Ví dụ kịch bản đơn giản dưới đây thất bại trong việc kiểm tra cú pháp của ELSE
khối INSERT INTO
với lỗi của:Chèn SQL vào Bảng tạm thời trong cả hai khối If và Else
Đã có một đối tượng tên là '#MyTestTable' trong cơ sở dữ liệu.
DECLARE @Id int
SET @Id = 1
IF OBJECT_ID('tempdb..#MyTestTable') IS NOT NULL DROP TABLE #MyTestTable
IF (@Id = 2) BEGIN
SELECT 'ABC' AS Letters
INTO #MyTestTable;
END ELSE BEGIN
SELECT 'XYZ' AS Letters
INTO #MyTestTable;
END
tôi có thể tạo ra các bảng tạm thời trước khi tuyên bố IF/ELSE
và sau đó chỉ cần làm INSERT SELECT
báo cáo trong các khối có điều kiện, nhưng bảng sẽ có rất nhiều cột và tôi đã cố gắng để có hiệu quả về nó. Đó có phải là lựa chọn duy nhất không? Hay có cách nào để thực hiện công việc này?
Cảm ơn, Matt
Câu trả lời của tôi không đề cập đến việc sử dụng SQL động - thực tế, nó chứng minh rằng SQL động * không thể được sử dụng để giải quyết vấn đề và kết luận cụ thể là khai báo bảng tạm thời trước khi chèn dữ liệu. . –
Bạn có thể sử dụng SQL động và chèn vào bảng tạm thời toàn cục (## MyTesttable) và xóa bảng toàn cục sau đó. Sẽ thêm dưới dạng câu trả lời riêng – Rym