끼 워 넣 은 매개 변 수 를 실행 하 는 sql - spexecutesql

2585 단어 execute
보통 sql 문 구 를 실행 합 니 다. 모두 exec 를 사용 합 니 다. exec 기능 이 강하 지만 끼 워 넣 는 매개 변 수 는 지원 되 지 않 습 니 다. spexecutesql 이 이 문 제 를 해결 했다.sqlserver 도움말 베 끼 기:
sp_executesql 은 여러 번 다시 사용 하거나 동적 으로 생 성 할 수 있 는 Transact - SQL 문 구 를 실행 하거나 일괄 처리 합 니 다.Transact - SQL 구문 이나 일괄 처 리 는 끼 워 넣 은 인 자 를 포함 할 수 있 습 니 다.문법 spexecutesql [@stmt =] stmt[    {, [@params =] N'@parameter_name  data_type [,...n]' }    {, [@ param 1 =] 'value 1' [,... n]}] 인자 [@ stmt =] stmt 는 Transact - SQL 구문 이나 일괄 처 리 된 유 니 코드 문자열 을 포함 하고 있 으 며, stmt 는 ntext 로 암시 적 으로 변환 할 수 있 는 유 니 코드 상수 나 변수 여야 합 니 다.더 복잡 한 유 니 코드 표현 식 을 사용 할 수 없습니다.문자 상수 사용 을 허용 하지 않 습 니 다.상수 가 지정 되면 N 을 접두사 로 사용 해 야 합 니 다.예 를 들 어 유 니 코드 상수 N 'spwho '는 유효 하지만 문자 상수' spwho '는 무효 입 니 다.문자열 의 크기 는 사용 가능 한 데이터베이스 서버 메모리 에 만 제 한 됩 니 다.stmt 는 변수 이름과 같은 매개 변 수 를 포함 할 수 있 습 니 다. 예 를 들 어
N'SELECT * FROM Employees WHERE EmployeeID = @IDParameter'
stmt 에 포 함 된 매개 변 수 는 @ params 매개 변수 정의 목록 과 매개 변수 값 목록 에 모두 대응 하 는 항목 이 있어 야 합 니 다.[@params =] N'@parameter_name  data_type [,... n] '문자열 은 stmt 에 삽 입 된 모든 매개 변수의 정 의 를 포함 합 니 다.이 문자열 은 ntext 로 암시 적 으로 변환 할 수 있 는 유 니 코드 상수 나 변수 여야 합 니 다.모든 매개 변수 정 의 는 매개 변수 이름과 데이터 형식 으로 구성 된다.n 은 추가 매개 변수 정 의 를 나타 내 는 자리 표시 자 입 니 다.stmt 에서 지정 한 매개 변 수 는 @ params 에서 정의 해 야 합 니 다.stmt 의 Transact - SQL 구문 이나 일괄 처리 에 인자 가 포함 되 어 있 지 않 으 면 @ params 가 필요 하지 않 습 니 다.이 인자 의 기본 값 은 NULL 입 니 다.[@ param 1 =] 'value 1' 매개 변수 문자열 에서 정 의 된 첫 번 째 매개 변수의 값 입 니 다.이 값 은 상수 나 변수 일 수 있 습 니 다.stmt 에 포 함 된 매개 변수 에 매개 변수 값 을 제공 해 야 합 니 다.stmt 에 포 함 된 Transact - SQL 구문 이나 일괄 처리 에 인자 가 없 으 면 값 이 필요 하지 않 습 니 다.매개 변수의 값 을 추가 하 는 자리 표시 자 입 니 다.이 값 들 은 상수 나 변수 일 뿐 더 복잡 한 표현 식 이 아 닙 니 다. 예 를 들 어 함수 나 연산 자 를 사용 하여 생 성 된 표현 식 입 니 다.코드 값 0 (성공) 또는 1 (실패) 결과 집합 을 되 돌려 줍 니 다. SQL 문자열 을 생 성 하 는 모든 SQL 구문 에서 결과 집합 을 되 돌려 줍 니 다.예 (민 남 교역 망 제공 에 감 사 드 립 니 다)
declare @user varchar(1000)
declare @moTable varchar(20)

select @moTable = 'MT_10'




declare @sql nvarchar(4000)  -- ,


set @sql='select @user = count(distinct userid)  from '+@moTable  --

-- @sql
exec sp_executesql @sql
  ,N'@user varchar(1000) out'  -- @sql
  ,@user out                   -- ,

print @user


 


 이 예 에서 @ moTable 은 삽 입 된 매개 변수 입 니 다.

좋은 웹페이지 즐겨찾기