Bağlı sunucu sorgusuna değişken geçirme
Bu makalede, bağlı sunucu sorgusuna değişken geçirme açıklanmaktadır.
Orijinal ürün sürümü: SQL Server Books Online
Özgün KB numarası: 314520
Özet
Bağlı bir sunucuyu sorguladığınızda, sık sık , OPENROWSET
veya OPENDATASOURCE
deyimini OPENQUERY
kullanan bir geçiş sorgusu gerçekleştirirsiniz. Önceden tanımlanmış Transact-SQL dizelerini kullanarak bunu nasıl yapacağınızı görmek için SQL Server Books Online'daki örnekleri görüntüleyebilirsiniz, ancak bu işlevlere değişken geçirmenin bir örneği yoktur. Bu makalede, bağlı sunucu sorgusuna değişken geçirmenin üç örneği verilmiştir.
Geçiş işlevlerinden birine değişken geçirmek için dinamik bir sorgu oluşturmanız gerekir.
Tırnak işaretleri içeren tüm verilerin belirli bir işlemeye ihtiyacı vardır.
Temel değerleri geçirme
Temel Transact-SQL deyimi biliniyorsa ancak bir veya daha fazla belirli değer geçirmeniz gerektiğinde aşağıdaki örneğe benzer bir kod kullanın:
DECLARE @TSQL varchar(8000), @VAR char(2)
SELECT @VAR = 'CA'
SELECT @TSQL = 'SELECT * FROM OPENQUERY(MyLinkedServer,''SELECT * FROM pubs.dbo.authors WHERE state = ''''' + @VAR + ''''''')'
EXEC (@TSQL)
Sorgunun tamamını geçirme
Transact-SQL sorgusunun tamamını veya bağlı sunucunun adını (veya her ikisini) geçirmeniz gerektiğinde, aşağıdaki örneğe benzer bir kod kullanın:
DECLARE @OPENQUERY nvarchar(4000), @TSQL nvarchar(4000), @LinkedServer nvarchar(4000)
SET @LinkedServer = 'MyLinkedServer'
SET @OPENQUERY = 'SELECT * FROM OPENQUERY('+ @LinkedServer + ','''
SET @TSQL = 'SELECT au_lname, au_id FROM pubs..authors'')'
EXEC (@OPENQUERY+@TSQL)
Sp_executesql saklı yordamını kullanma
Çok katmanlı tırnaklardan kaçınmak için aşağıdaki örneğe benzer bir kod kullanın:
DECLARE @VAR char(2)
SELECT @VAR = 'CA'
EXEC MyLinkedServer.master.dbo.sp_executesql
N'SELECT * FROM pubs.dbo.authors WHERE state = @state',
N'@state char(2)',
@VAR
Ayrıca Bkz
Daha fazla bilgi için, aşağıdaki konulara bakın:
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin