728x90
# 함수
- 학과의 이름을 주어서 그 학과의 교수의 수를 반환하는 함수
create function dept_count (@dept_name varchar(20))
returns integer
as
begin
declare @d_count integer;
select @d_count = count (* )
from instructor
where instructor.dept_name = @dept_name
return (@d_count);
end
# 함수 사용 – in SQL
- 12명 이상의 교수를 가진 모든 학과의 이름과 예산을 구하라
select dept_name, budget
from department
where dbo.dept_count (dept_name ) > 12
# 함수 사용 – in JDBC
CallableStatement cstmt = null;
try {
cstmt = connection.prepareCall("{? = call dbo.dept_count (?)}");
cstmt.registerOutParameter(1,java.sql.Types.VARCHAR);
cstmt.setString(2, “Accounting");
cstmt.execute(); // Execute the callable statement
String outParam = cstmt.getString(1);
System.out.println("Output: " + outParam);
} catch (Exception e) {
System.out.println("Exception message: " + e.getMessage());
}
# 테이블 함수
예) 특정한 학과의 모든 교수를 포함하는 테이블 반환
create function instructors_of (@dept_name char(20))
returns table as
return table(select ID as r_id, name as r_name, dept_name as r_dept_name,
salary as r_salary
from instructor
where instructor.dept_name = @dept_name)
- 함수 사용
select *
from dbo.instructors_of (‘Accounting’))
반응형