Vấn đề của tôi là sử dụng một biến bảng trong một exec.sql động sử dụng biến bảng -TSQL
declare @sort_col nvarchar(1000) = 'itm_id'
declare @sort_dir nvarchar(4) = 'desc'
declare @filters nvarchar(1000) = ' and itm_name like ''%aa%'''
declare @temp table
(
itm_id int
)
insert into @temp
EXEC('select itm_id from Tblitm where itm_name not like ''%aa%''')
EXEC('select * from (select (ROW_NUMBER() OVER (ORDER BY '[email protected]_col+' '[email protected]_dir+')) row_num, * FROM (select itm_id, itm_name,
dbo.fnItmsHistory(itm_id) itm_history
from dbo.Tblitm as itm
left outer join '[email protected]+' as temp on itm.itm_id = temp.itm_id
where itm_id=itm_id and temp.itm_id = null '[email protected]+') as x) as tmp')
Nó nói Phải khai báo các biến vô hướng "@temp" khi bảng tạm thời bị tuyên bố tôi đã cố gắng sử dụng bảng tạm thời ban đầu và nó làm việc, nhưng tôi đã có vấn đề khi cố gắng cập nhật thực thể của tôi model.So có bất kỳ giải pháp cho vấn đề này?
Lưu ý: Tôi phải sử dụng lệnh exec vì trong bộ lọc, tôi lưu trữ chuỗi cho mệnh đề where.
Sử dụng #temp thay vì @temp và chỉ tham chiếu #temp trực tiếp trong EXEC() thay vì xử lý nó như một tên biến. –
Xem [Chèn động vào báo cáo bảng biến SQL Server] (http://stackoverflow.com/questions/5196434/dynamic-insert-into-variable-table-statement-sql-server) –
@AaronBertrand i thực hiện truy vấn chức năng như rằng, nhưng tôi đã có vấn đề khi cập nhật mô hình thực thể của tôi vì vậy tôi sợ tôi không thể sử dụng sửa chữa. – Aleks