>데이터 베이스 >MySQL 튜토리얼 >SQL Server에서 OPENQUERY에 매개 변수를 전달하려면 어떻게 해야 합니까?

SQL Server에서 OPENQUERY에 매개 변수를 전달하려면 어떻게 해야 합니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-14 12:48:44964검색

How Can I Pass Parameters to OPENQUERY in SQL Server?

OPENQUERY의 매개변수 전달: 해결 방법

SQL Server의 OPENQUERY 명령은 연결된 서버 쿼리를 용이하게 합니다. 그러나 변수를 매개변수로 직접 전달하는 것은 지원되지 않습니다. 이 문서에서는 효과적인 해결 방법을 설명합니다.

매개변수화된 쿼리 방법

OPENQUERY의 한계에도 불구하고 매개변수를 효과적으로 전달하기 위해 여러 가지 전략을 사용할 수 있습니다.

1. 하드코딩 기본 값:

구조는 알려져 있지만 특정 값이 필요한 쿼리의 경우 동적 SQL이 다음과 같은 솔루션을 제공합니다.

<code class="language-sql">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);</code>

2. 전체 쿼리 전달:

이 접근 방식은 전체 T-SQL 쿼리나 연결된 서버 이름(또는 둘 다)을 동적으로 결정해야 하는 시나리오에 이상적입니다.

<code class="language-sql">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);</code>

3. sp_executesql 활용:

복잡한 인용을 단순화하기 위해 sp_executesql 저장 프로시저가 더 깔끔한 대안을 제공합니다.

<code class="language-sql">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;</code>

이러한 기술을 사용하면 개발자는 OPENQUERY에 매개변수화된 쿼리를 성공적으로 통합하여 본질적인 한계를 극복할 수 있습니다. 특정 요구 사항과 쿼리 복잡성에 가장 적합한 방법을 선택하세요.

위 내용은 SQL Server에서 OPENQUERY에 매개 변수를 전달하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.