데이터베이스 개발자 질문과 답변 게시판
안녕하세요!!
생초보인데 운좋게 어쩌다가 회사에 입사를 하게 된 생초보신입회원입니다.
워낙 지식이 없는터라..회사에서 눈치보면서 학원식으로 공부중인데..매개변수에서 막혀서 2틀동안 고민을 해도 해답이 안나와서
이렇게 질문을 남깁니다.
상사에게 질문하기에는 너무 쉬운질문이라 물어보기가 엄두가 안나서 2틀동안 계속 끙끙거리면서 해도 안되네요ㅠ
--Create Table test(col1 char(01), col2 int) --test테이블 생성.
/*
Insert Into test Values('A', 10)
Insert Into test Values('B', 20)
Insert Into test Values('C', 30)
Insert Into test Values('D', 40)
Insert Into test Values('E', 50)
*/ --테이블에 데이터입력.
--Select * From test --생성된 test테이블 조회.
/*
Declare @col1 char(01)
Declare @col2 int
Declare @col3 int
*/ --변수선언.
-----------------------------------------------------------명령이 완료되었습니다.
Set @col3 = 0 --하지만 실행을 하면 서버: 메시지 137, 수준 15, 상태 1, 줄 1 '@col3' 변수를 선언해야 합니다.라는 메세지가 나옵니다.ㅠㅠ
위와같이 Declare로 변수선언까지는 됩니다. --하지만 실행을 하면 서버: 메시지 137, 수준 15, 상태 1, 줄 1 '@col3' 변수를 선언해야 합니다.
라는 메세지가 나옵니다.ㅠㅠ
여러사이트와 책으로 예제공부를 하고 있는데, 예제를 변수선언 이후 잘 안되서...
어떻게 돌아가는지 잘 몰라서 2틀동안 계속 겉돌고 있습니다.
이 예제 뿐만 아니라 매개변수 들어가는 예제마다 변수선언후 실행이 안됩니다..ㅠㅠ
학원이나 독학이면 계속 찾아보겠지만...직장이다보니 하루빨리 능숙해져서 업무에 투입을 해야해서.
제능력상 다찾아보고 못찾아서 이렇게 질문을 드립니다....엄청 쉬운거 같은데...못찾겠습니다..ㅠ_ㅠ
첨부파일에 지금 하고 있는 예제 올려놨습니다..ㅠ_ㅠ
시간이 갈수록 알아가서 좋긴 한데..그속도로는...회사에서 입지가..위태합니다..ㅠ
Comment 5
-
건우아빠
2013.01.31 21:55
-
MissingYou
2013.01.31 23:46
/* */, --주석의 의미는 알고 있습니다~
한꺼번에 실행이 아니고 미리작성은 해놨지만 예제와 똑같이 그부분만 마우스드래그해서 f5로 실행하고 있습니다~
미리작성이유는.. 답변으로 해결이 되면 바로 연습해볼려고 미리작성해놓은겁니다ㅠㅠ
-
건우아빠
2013.02.01 09:46
알고는 계시는듯 하지만 작성해 놓고 위내용 그래도 작성된 상태에서 드래그를 해서 실행 하셨다면
머리는 알고 계시지만 손에 있는 마우스는 아직 모르고 있습니다.
위 그대로를 드래그 하시면 주석시작부터 같이 하실것인데 선언문이 실행이 될까요?
드래그가 선문문 부분 따로 실행문 부분 따로 드래그 기능이 있나요 ?
드래그를 해서 실행을 하시면 드래그 부분만 인식해서 실행 됩니다. 제 생각에는 이게 원인입니다.
-
건우아빠
2013.02.01 09:40
올려주신 내용을 가지고 테스트를 해봤습니다.
신입이시다보니 충분히 어렵게 느껴지실겁니다...
MissingYou님이 작성한 내용에서 수정 한것은 한가지 입니다.
질문하신 에러는 주석을 빼면 사라지구요....
실제 에러는 테이블의 컬럼명과 커서에서 select 할때 컬럼명이 다릅니다.
Declare @col1 char(01)
Declare @col2 int
Declare @col3 int
-----------------------------------------------------------명령이완료되었습니다.
Set @col3 = 0 --하지만실행을하면서버: 메시지137, 수준15, 상태1, 줄1 '@col3' 변수를선언해야합니다.라는메세지가나옵니다.ㅠㅠ
Declare cur_test Cursor For --cur_test커서선언.
Select col1, col2 From test --test테이블의컬럼co1과co2 조회.
Open cur_test --cur_test커서열기.
Fetch Next From cur_test Into @col1, @col2 --???
While @@Fetch_status = 0 --FETCH NEXT를이용하여다음의행으로이동을했을때해당되는행이있으면계속처리.
Begin
Set @col3 = @col3 + @col2
Select @col1, @col2, @col3 --변수@co1, @co2, @co3 선택.
Fetch Next From cur_test Into @col1, @col2 --???
End
Close cur_test --cur_test커서닫기.
Deallocate cur_test --cur_test커서종료.
-
건우아빠
2013.02.01 09:52
커서는 보통 위에 처럼 쓰시는데 아래와 같이 쓰셔도 됩니다.
Open cur_test --cur_test커서열기.
While 1 = 1
Begin
Fetch Next From cur_test Into @col1, @col2
if @@Fetch_status <> 0 break
Set @col3 = @col3 + @col2
Select @col1, @col2, @col3
End
Close cur_test --cur_test커서닫기.
Deallocate cur_test --cur_test커서종료.
/* */는 주석처라 하라는 의미합니다. 이상의 내용은 주석처리되기 때문에. 한꺼번에. 실행하는. 실행이 안됩니다
-- 한줄주석처리