数据库function,view的使用

2016-07-02 17:50:44  访问(2543) 赞(0) 踩(0)


相关下载:数据库练习建表脚本简化版_SqlServer  数据库练习建表脚本简化版_Oracle     

  • 假定我们有学生表和班级表,关系如下图所示:



    使用视图

    我们要输出

    学生姓名、班级名称、班级类型

    通常SQL写法如下:


    我们可以考虑用视图实现:

    1、创建视图


    执行SQL语句:


    使用function

    如果我想查看班级信息

    班级名称、班级类型(中文)

    通常SQL写法如下:

    经常写case when比较麻烦,而且如果EmClassTypeV字典如果有更新,后续的脚本都需要跟着更新,不便于维护。

    考虑用function实现。

    创建function的脚本如下:


    查询的SQL语句可写成:


    简化很多。

    如果只显示班级名称,不需要显示班级类型的话,可以通过function,不需要连表,相关SQL写法如下:

    (创建function)



    (执行SQL语句)


    可以不需要连表查询数据,可以让“表哥”关注与主表的业务查询操作。


    另:建表脚本下载


     

  • select 
      s.TheName,
      c.TheName as c_TheName,
      case c.EmClassTypeV 
           when 1 then '普通文科班'
           when 2 then '普通理科班'
           when 3 then '重点文科班'
           when 4 then '重点理科班'
           else '其它' 
       end  as c_EmClassTypeV
    from
    UTB_EXAM_STUDENT s,
    UTB_EXAM_CLASS c
    where 
    s.ClassId = c.Id
    order by c.Id, s.TheName
    
    
  • create or replace function FUN_EmClassType
    (EmClassTypeV in integer) return varchar2 
    is
      Result varchar2(255);
    begin
      select case EmClassTypeV 
           when 1 then '普通文科班'
           when 2 then '普通理科班'
           when 3 then '重点文科班'
           when 4 then '重点理科班'
           else '其它' 
       end into Result from dual;
    
      return(Result);
    end FUN_EmClassType;
    
    
    
  • create or replace function FUN_EXAM_CLASS__THENAME
    (i_ID in number) return varchar2 is 
      Result varchar2(255);
    begin
      select 
             t.TheName into Result 
      from 
             UTB_EXAM_CLASS t
      where 
             t.ID = i_ID;
    
      return(Result);
    end FUN_EXAM_CLASS__THENAME;
    
    
    

标签:数据库function,view的使用 

上一条:

下一条:


 

相关评论

评论加载中……
 

发表评论

类型:
内容:
  (Alt+Enter)