집 >데이터 베이스 >MySQL 튜토리얼 >SQL Server에서 OPENQUERY에 매개 변수를 전달하려면 어떻게 해야 합니까?
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!