मेरी समस्या एक निष्पादन में तालिका चर का उपयोग कर रही है।तालिका चर का उपयोग कर गतिशील एसक्यूएल - टीएसएल
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')
यह अदिश चर "@temp" घोषित करना चाहिए कहते हैं जब अस्थायी तालिका घोषित किया जाता है मैं मूल अस्थायी तालिका का उपयोग करने की कोशिश की और यह काम किया, लेकिन मैं समस्या नहीं थी जब मेरी इकाई model.So अपडेट करने का प्रयास है वहाँ किसी भी इस समस्या के लिए समाधान?
नोट: मुझे निष्पादन का उपयोग करना चाहिए क्योंकि फ़िल्टर में मैं जहां खंड के लिए स्ट्रिंग स्टोर करता हूं।
@temp के बजाय #temp का उपयोग करें और केवल एक चर नाम के इलाज के बजाय EXEC() में संदर्भ #temp का संदर्भ लें। –
देखें [परिवर्तनीय तालिका कथन SQL सर्वर में गतिशील डालने] (http://stackoverflow.com/questions/5196434/dynamic-insert-into-variable-table-statement-sql-server) –
@AaronBertrand मैंने क्वेरी को कार्यात्मक बना दिया कि, लेकिन मुझे अपने इकाई मॉडल को अपडेट करते समय समस्याएं थीं इसलिए मुझे डर है कि मैं उस फिक्स का उपयोग नहीं कर सकता। – Aleks