当前位置: 代码迷 >> Oracle管理 >> pl/sql where后面的语句不太明白,该怎么解决
  详细解决方案

pl/sql where后面的语句不太明白,该怎么解决

热度:71   发布时间:2016-04-24 05:25:31.0
pl/sql where后面的语句不太明白
CREATE OR REPLACE FUNCTION xx_kja_test_almostfull(  
  p_Department xx_kja_test_classes.department%TYPE,
  p_Course xx_kja_test_classes.course%TYPE)
RETURN BOOLEAN IS
  v_currentStudents NUMBER;
  v_maxstudent NUMBER;
  v_ReturnValue BOOLEAN;
  v_FullPercent CONSTANT NUMBER := 90;

BEGIN
  SELECT current_students,max_students
  INTO v_currentStudents,v_maxStudents
  FROM Xx_Kja_Test_Classes
WHERE department = p_Department
AND course = p_Course;
IF(v_CurrentStudent/v_MaxStudents * 100) > v_FullPercent
THEN
  v_ReturnValue := TRUE;
ELSE
  v_ReturnValue := FALSE;
END IF;
  RETURN v_ReturnValue;
END almostfull;

------解决方案--------------------
是判断……
这种
v_FullPercent CONSTANT NUMBER := 90;定义并赋值

------解决方案--------------------
传值而已 可以一样 可以不一样 一样的话 可以查到数据 不一样的话查询不到数据 

如表tb1中有2条数据 
col1 col2
1 a
2 b

如果现在是根据传入的参数p_col2来匹配col2的话

如果p_col2传入的值为a
select * tb1 where col2='a'
查询的数据只有一条
col1 col2
1 a

如果传入的值为c
select * tb1 where col2='c'
那么查询出来的数据为空 没有符合col2='c' 的数据

理解?
------解决方案--------------------
SQL code
CREATE OR REPLACE FUNCTION xx_kja_test_almostfull(p_Department xx_kja_test_classes.department%TYPE,                                                  p_Course     xx_kja_test_classes.course%TYPE)  RETURN BOOLEAN IS  v_currentStudents NUMBER;  v_maxstudent      NUMBER;  v_ReturnValue     BOOLEAN;  v_FullPercent CONSTANT NUMBER := 90;BEGIN  SELECT current_students, max_students    INTO v_currentStudents, v_maxStudents    FROM Xx_Kja_Test_Classes     WHERE department = p_Department   --根据条件过滤出记录,找出current_students, max_students赋值给v_currentStudents, v_maxStudents两个变量     AND course = p_Course;  IF (v_CurrentStudent / v_MaxStudents * 100) > v_FullPercent THEN  --if判断语句,当v_CurrentStudent / v_MaxStudents大于百分之90时,给返回值赋值true,否则false    v_ReturnValue := TRUE;  ELSE    v_ReturnValue := FALSE;  END IF;  RETURN v_ReturnValue;  --返回值END almostfull;
  相关解决方案