(1)编写函数 F_TEST_SFZHAO查询表eaa8 aac002(身份证号)当身份证号号码为15位时返回 1查询表eaa8 aac002(身份证号)当身份证号号码为18位时返回 2查询表eaa8 aac002(身份证号)当身份证号号码为15位时返回 9
最终使用函数查询出表eaa8中身份证号为18位的所有数据--使用函数 F_TEST_SFZHAO(2)编写函数 F_TEST_SFZHAO_COUNT
查询表eaa8 aac002(身份证号)只有一条记录的数据时返回   1查询表eaa8 aac002(身份证号)有多条数据时返回           2

解决方案 »

  1.   

    2个都是比较基础的题目  一条很简单的sql就能完成了
      

  2.   

    是函数不会创建还是?  简单的sql
    with t1 as
    (
         select '421022199911113425' c1 from dual
         union all
         select '242244555222114' from dual
         union all
         select '24224455522211124x' from dual
    )select decode(length(c1),15,1,18,2) c1
    from t1 ;      c1
    -------------
    1 2
    2 1
    3 2
    select case when (select count(c1) from t1) <= 1 then 1 else 2 end c1
    from dual;       c1
    -------------
    1 2
      

  3.   

    小写一个,可以参考一下
    CREATE TABLE message(id NUMBER(10),mid VARCHAR2(18),NAME VARCHAR2(20));
    INSERT INTO message VALUES (1,'450902198711302756','xiao de');CREATE OR REPLACE FUNCTION F_TEST_SFZHAO(p_mid VARCHAR2) RETURN NUMBER IS 
    v_id NUMBER;
    BEGIN 
      SELECT Length(mid) INTO v_id FROM message WHERE mid=p_mid AND ROWNUM=1;
      IF v_id=15 THEN 
        RETURN 1;
      ELSIF v_id=18 THEN 
        RETURN 2;
      END IF;
      EXCEPTION WHEN No_Data_Found THEN 
        RETURN 9;
    END;DECLARE 
    v_return NUMBER;
    BEGIN 
      v_return:=F_TEST_SFZHAO('45090219871130275');
      Dbms_Output.put_line(v_return);
    END;
      

  4.   

    aac002 难不成楼主从事的跟社保行业有关? 这个命名规则...... 核心平台的.
      

  5.   

    把第二个函数写了你看一下,不知道能否帮到你,我也是刚刚的学
    create or replace function F_test_count(aac002 varchar2) return varchar2 is
    v_count varchar2(2);
    v_number number(8); 
    begin
    select count(aac002) into v_number from eaa8 ;
    if v_number = 1 then 
    v_count:=1;
    else 
    v_count:=2;
    end if;
    return v_count;
    end;
      

  6.   

    能否用pl/sql写下完整的函数过程还有这些数字到底代表什么意思