2008년 9월 4일
* 1부터 10까지 자연수를 더하여 합계를 출력하시오
(3의 배수 빼고, 3의 배수이면서 2의 배수인 수는 더하라 출력하라)
declare @i tinyint
declare @sum int
set @i = 1
set @sum=0
while @i < 11
begin
if @i % 3 <> 0
begin
set @sum = @sum + @i
end
else if @i % 2 = 0
begin
set @sum = @sum + @i
print '3의 배수이면서 2의 배수 : '+cast(@i as char(10))
end
set @i = @i + 1
end
select @sum
* 1부터 10까지 자연수를 더하여 합계를 출력하시오
(3의 배수 빼고, 3의 배수이면서 2의 배수인 수는 더하라 출력하라)
declare @i tinyint
declare @sum int
set @i = 1
set @sum=0
while @i < 11
begin
if @i % 3 <> 0
begin
set @sum = @sum + @i
end
else if @i % 2 = 0
begin
set @sum = @sum + @i
print '3의 배수이면서 2의 배수 : '+cast(@i as char(10))
end
set @i = @i + 1
end
select @sum
* 사용자변수명 point를 77점으로 설정하고 90이상 'A',80이상은 'B',
70이상은 'C', 나머지는 'F'라고 학점을 출력하시오(IF문, CASE문)
declare @point tinyint
set @point = 77
if @point >= 90
print 'A'
else if @point >=80
print 'B'
else if @point >= 70
print 'C'
else
print 'F'
declare @point tinyint, @credit nchar(1)
set @point = 77
if @point >= 90
set @credit = 'A'
else if @point >=80
set @credit = 'B'
else if @point >= 70
set @credit = 'C'
else
set @credit = 'F'
print @credit
print '취득점수='+cast(@point as char(5))
print '취득학점='+@credit
declare @point tinyint, @grade nchar(1)
set @point = 77
set @grade =
case
when (@point >= 90) then 'A'
when @point >= 80 then 'B'
when @point >= 70 then 'C'
else 'F'
end
print @grade
print '취득점수='+cast(@point as char(5))
print '취득학점='+@grade
* 고객별로 price*amount의 합계가 2000이상이면 '최우수고객',
1000이상이면 '우수고객', 1이상이면 '일반 고객', 나머지는 '유령고객'
이라고 나오도록 출력은 고객번호, 총구매액, 고객내용을 출력하시오
p 275페이지
use sqldb2b
select * from buytbl
declare @grade nchar(5)
select userid, sum(price*amount),
case
when (sum(price*amount) >= 2000) then '최우수고객'
when (sum(price*amount) >= 1000) then '우수고객'
when (sum(price*amount) >= 1) then '일반고객'
else '유령고객'
end as 고객등급
from buytbl
group by userid
--buytbl만 가지고 보면 총구매액이 0인 유령고객은 출력할 수 없다.
* 1부터 10까지 자연수를 더하여 합계를 출력하시오
(중간에 합계가 20이 넘으면 그만하고 최종수와 합계를 출력하시오)
(3의 배수는 합계에서 빼고 - continue 이용)
declare @i tinyint
declare @sum int
set @i = 0
set @sum=0
while @i < 10
begin
set @i = @i + 1
if @i % 3 = 0
begin
continue
end
else
begin
set @sum = @sum + @i
end
end
select @i, @sum
print ' 최종수= '+cast(@i as char(5))
print ' 합계= '+cast(@i as char(5))
-- if @sum > 20
-- begin
--break
-- return --현재 처리 모듈을 종료하고 호출자에게 값을 반환한다
-- end
declare @i tinyint
declare @sum int
set @i = 0
set @sum=0
while @i <= 10
begin
if @i % 3 = 0
begin
set @i = @i + 1
continue
end
set @sum = @sum + @i
if @sum > 20
begin
-- break
-- return --현재 처리 모듈을 종료하고 호출자에게 값을 반환한다
goto endprint
end
set @i = @i + 1
end
endprint:
select @i, @sum
print ' 최종수= '+cast(@i as char(5))
print ' 합계= '+cast(@sum as char(5))
*1부터 10까지 자연수를 더하여 합계를 출력하시오
(try~catch문을 이용하여 런타임시 에러가 발생한 경우 정상종료를 유도한다)
'0으로 나눌 수 없습니다.'라고 출력하고 v_num값을 최종수가 되게 한다.
begin try
declare @v_num tinyint, @v_sum smallint
set @v_num=1
set @v_sum=0
while @v_num <= 10
begin
set @v_sum = @v_sum + @v_num
set @v_num = @v_num + 1
--set @v_sum = @v_sum/0
use sqldb2b
insert into usertbl
values('AAA','홍길동',1988,'서울')
end
print ' 최종수= '+cast(@v_num as char(5))
print ' 합계= '+cast(@v_sum as char(5))
end try
begin catch
set @v_num=@v_num-1
print ' 최종수= '+cast(@v_num as char(5))
print ' 합계= '+cast(@v_sum as char(5))
print error_number()
print error_message()
end catch