สำหรับแบบสอบถามแบบคงที่เช่นเดียวกับคำถามของคุณชื่อตารางและชื่อคอลัมน์จะต้องคงที่
สำหรับเคียวรีแบบไดนามิกคุณควรสร้าง SQL แบบเต็มและใช้ sp_executesql เพื่อดำเนินการ
นี่คือตัวอย่างของสคริปต์ที่ใช้ในการเปรียบเทียบข้อมูลระหว่างตารางเดียวกันของฐานข้อมูลที่แตกต่างกัน:
แบบสอบถามแบบคงที่:
SELECT * FROM [DB_ONE].[dbo].[ACTY]
EXCEPT
SELECT * FROM [DB_TWO].[dbo].[ACTY]
เนื่องจากฉันต้องการเปลี่ยนชื่อ tha ของtable
และschema
ฉันได้สร้างการสืบค้นแบบไดนามิกนี้:
declare @schema varchar(50)
declare @table varchar(50)
declare @query nvarchar(500)
set @schema = 'dbo'
set @table = 'ACTY'
set @query = 'SELECT * FROM [DB_ONE].['+ @schema +'].[' + @table + '] EXCEPT SELECT * FROM [DB_TWO].['+ @schema +'].[' + @table + ']'
EXEC sp_executesql @query
เนื่องจากเคียวรีแบบไดนามิกมีรายละเอียดมากมายที่จำเป็นต้องพิจารณาและยากที่จะพูดได้ฉันขอแนะนำให้คุณอ่าน: คำสาปและพรของ SQL แบบไดนามิก