SQLserver 의 declare 변수 사용법

2586 단어 SQLserverdeclare
SQL 의 declare 사용법
평소에 SQL 조회,저장 과정 은 모두 느낌 에 따라 SQL 의 구체 적 인 문법 을 연구 한 적 이 없고 c\#그 세트 에 따라 SQL 을 모방 해 왔 습 니 다.며칠 전에 프로젝트 에서 문제 가 발생 하여 저 는 declare 정의 변수의 역할 영역 에 관심 을 가지 게 되 었 습 니 다.
c\#의 부분 변 수 를 모두 가 알 고 있 습 니 다.if 에서 우리 가 변 수 를 정의 하면 그의 역할 은 if 가 끝 날 때 까지 if 외 에 이 변 수 를 식별 하지 않 습 니 다.else 에 서 는 사용 할 수 없습니다.간단하게 쓰 십시오.

if(true)
{
Int32i=1;
Console.WriteLine(i);
}
이 i 의 역할 영역 은 if 안에 있 습 니 다.만약 우리 가 if 밖에서 이 변 수 를 사용한다 면.

if(true)
{
Int32i=1;
Console.WriteLine(i);
}
Console.WriteLine(i);
그럼 두 번 째 출력 문 구 는 잘못 보 고 됩 니 다.
The name 'i' does not exist in the current context
i 의 역할 영역 이 나 왔 다 는 뜻 입 니 다.
그럼 우리 가 sql 에 이런 코드 를 쓰 면 어떤 상황 일 까요?우선 if 에 써 주세요.

IF1=1
BEGIN
DECLARE@testVARCHAR
SET@test='1'
PRINT'inif:'+@test
END
실행 결과 출력 in if:1 예상 가능 한 결과 입 니 다.그럼 if 밖에서 변수@test 를 사용 해 보 겠 습 니 다.

IF1=1
BEGIN
DECLARE@testVARCHAR
SET@test='1'
PRINT'inif:'+@test
END
PRINT'outif:'+@test
이렇게 하면 어떤 결과 가 나 올 지 모 르 겠 습 니 다.여러분 들 은 어떻게 생각 하 시 는 지 모 르 겠 습 니 다.제 뇌 순 세 를 보면 이것 이 잘못 되 어야 한 다 는 생각 이 들 었 습 니 다.변수의 역할 영역 이 생 겼 습 니 다.실제 결 과 는 잘못 보고 되 지 않 았 을 뿐만 아니 라@test 의 값 도 그대로 있 습 니 다.
in if:1
out if:1
이 결 과 를 보고 나 는 매우 답답 했다.SQL 은 너무 의외 다.
SQL SERVER 2005 도움말 문서 에서 declare 에 대한 도움말 에서 이 말 을 발 견 했 습 니 다.비고 의 세 번 째 줄 은'부분 변수의 역할 영역 은 설명 되 었 을 때 일괄 처리'입 니 다.
Msdn 주소:http://msdn.microsoft.com/zh-cn/library/ms188927.aspx
이 글 자 는 이렇게 큰 편 에서 정말 사람들의 주목 을 끌 지 못 한다.
현재 우 리 는 원래 declare 변수의 역할 영역 이 있 는 일괄 처리 라 는 것 을 알 고 있 습 니 다.if 는 그 역할 영역 을 차단 할 수 없습니다.그 위 에 있 는 우리 의 코드 if 내외 의 코드 는 모두 일괄 처리 에 있 기 때문에@test 는 모두 사용 할 수 있 고 if 에 설 치 된 값 이 있 습 니 다.
다음은 제 가 코드 를 개조 하 겠 습 니 다.SQL 에 서 는 GO 구문 으로 일괄 처 리 를 구분 합 니 다.

IF1=1
BEGIN
DECLARE@testVARCHAR
SET@test='1'
PRINT'inif:'+@test
END
GO
PRINT'outif:'+@test
맞 아,문법 검사 후 SQL 이 잘못 보 고 했 어."스칼라 변수"@test"를 밝 혀 야 해.
주:GO 는 sql 문장의 끝 에 사용 되 는 것 입 니 다.예 를 들 어 일괄 처리 문 구 는 이러한 select*from,b select*from a 는 다음 select 뒤에 GO 를 추가 하면 한 번 에 두 개의 sql 문 구 를 실행 할 수 있 습 니 다.
SQL server 의 declare 변수 용법 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 SQL server 의 declare 변수 내용 은 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기