Đầu tiên tôi cố giải thích hoàn cảnh. Tôi lưu trữ biểu thức lọc trong một cột được phân cách bằng dấu ngắt dòng. Ý tưởng cơ bản là:Tại sao không thể sử dụng câu lệnh INSERT EXEC trong một thủ tục được lưu trữ được gọi bởi một thủ tục lưu sẵn khác?
SELECT
'SELECT ''' + REPLACE(topic_filter,CHAR(10),''' UNION ALL SELECT ''') + ''''
FROM dbo.topic_filter T
WHERE
T.id = @id
FOR XML PATH('')
Sau này, tôi chỉ cần thực hiện chuỗi này để đưa số liệu vào bảng tạm thời. Sự cố của tôi bắt đầu ở đây. Đoạn mã nằm trong quy trình được lưu trữ và được sử dụng bởi nhiều quy trình được lưu trữ để tạo nguồn cơ sở để lấp đầy.
Cách tiếp cận 1:
Gọi sp này từ một SP khác để điền vào bảng tạm thời.
Kết quả 1:
Không thể lồng nhau câu lệnh INSERT EXEC. (. Nếu tôi gọi đơn giản với dbo exec ... phong cách mã đang làm việc tôi chỉ nhận được lỗi nếu tôi cố gắng gọi trong vòng một stored procedure)
Phương pháp 2:
tôi đặt đoạn mã trên vào một bảng hàm giá trị.
Kết quả 2:
Sử dụng không hợp lệ toán tử tác dụng phụ 'INSERT EXEC' trong một hàm. (Chức năng bản thân không biên soạn)
Cảm ơn,
Péter
Điều này không hoạt động.Ít nhất trong MS Transact SQL 2008. – Jackson