日期:2014-05-16  浏览次数:20923 次

谁能帮我解释下这段代码,谢谢。
RT,以下都是一起的,没有给table。 

FUNCTION sal_ok (rank INT, salary REAL)
RETURN BOOLEAN IS
min_sal REAL;
max_sal REAL;
BEGIN
SELECT losal, hisal INTO min_sal, max_sal FROM
salgrade WHERE grade = rank;
RETURN(salary >= min_sal) AND (salary <= max_sal);
END sal_ok; 

PROCEDURE raise_salary (emp_id INT, grade INT, amountREAL) 
IS salary REAL;
BEGIN
SELECT sal INTO salary FROM emp
WHERE empno = emp_id;
IF sal_ok(grade, salary + amount) THEN UPDATE emp
SET sal = sal + amount WHERE empno = emp_id;
ELSERAISE invalid_salary;
END IF;
END raise_salary;  




































------解决方案--------------------
调整员工薪水,判断当前员工在同级别里调整薪水后是否在同级别薪资范围内,是则进行调整,否保留原有数值
------解决方案--------------------
引用:
RT,以下都是一起的,没有给table。 

FUNCTION sal_ok (rank INT, salary REAL)
RETURN BOOLEAN IS
min_sal REAL;
max_sal REAL;
BEGIN
SELECT losal, hisal INTO min_sal, max_sal FROM
salgrade WHERE grade = rank;
RETURN(salary >= min_sal) AND (salary <= max_sal);
END sal_ok; 

PROCEDURE raise_salary (emp_id INT, grade INT, amountREAL) 
IS salary REAL;
BEGIN
SELECT sal INTO salary FROM emp
WHERE empno = emp_id;
IF sal_ok(grade, salary + amount) THEN UPDATE emp
SET sal = sal + amount WHERE empno = emp_id;
ELSERAISE invalid_salary;
END IF;
END raise_salary;  

function是判断一个RANK的薪资范围,如果给定的SALARY在这个范围内则返回TRUE,否则返回FALSE.
PROCEDURE通过调用FUNCTON来判断工资更改是否合理,如果FUNCTION返回TRUE则更改工资,否则raise invalid_salary.