当前位置: 代码迷 >> Oracle管理 >> 关于oracle函数的写法,新手~
  详细解决方案

关于oracle函数的写法,新手~

热度:34   发布时间:2016-04-24 05:13:40.0
关于oracle函数的写法,新手求助~~
(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


------解决方案--------------------
ps:注意结贴 不然回复肯定没那么好了
------解决方案--------------------
是函数不会创建还是? 简单的sql

SQL code
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) c1from t1 ;      c1-------------1    22    13    2select case when (select count(c1) from t1) <= 1 then 1 else 2 end c1from dual;       c1-------------1    2
------解决方案--------------------
小写一个,可以参考一下
SQL code
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;
------解决方案--------------------
把第二个函数写了你看一下,不知道能否帮到你,我也是刚刚的学
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;
------解决方案--------------------
探讨

引用:

小写一个,可以参考一下
SQL code
CREATE TABLE message(id NUMBER(10),mid VARCHAR2(18),NAME VARCHAR2(20));
INSERT INTO message VALUES (1,'450902198711302756','xiao de');

CREATE OR REPLACE FUN……
  相关解决方案