??xml version="1.0" encoding="utf-8" standalone="yes"?>成人国产亚洲欧美成人综合网,欧美激情综合五月色丁香小说,亚洲国产福利在线http://www.aygfsteel.com/tfzhu/category/43806.html每天q步一点点Q?/description>zh-cnSun, 25 Jul 2010 06:09:15 GMTSun, 25 Jul 2010 06:09:15 GMT60recursion递归http://www.aygfsteel.com/tfzhu/archive/2010/07/24/327017.html断点断点Sat, 24 Jul 2010 08:25:00 GMThttp://www.aygfsteel.com/tfzhu/archive/2010/07/24/327017.htmlhttp://www.aygfsteel.com/tfzhu/comments/327017.htmlhttp://www.aygfsteel.com/tfzhu/archive/2010/07/24/327017.html#Feedback0http://www.aygfsteel.com/tfzhu/comments/commentRss/327017.htmlhttp://www.aygfsteel.com/tfzhu/services/trackbacks/327017.html--递归Q树状结构的存储与展C?br /> drop table article;
create table article
(
id number primary key,
count varchar2(4000),
pid number,
isleaf number(1), --0 代表非叶子节点,1代表叶子节点
alevel number(2)
);

insert into article values(1,'蚂蚁大战大象',0,0,0);
insert into article values(2,'大象被打下',1,0,1);
insert into article values(3,'蚂蚁也不好过',2,1,2);
insert into article values(4,'瞎说',2,0,2);
insert into article values(5,'没有瞎说',4,1,3);
insert into article values(6,'怎么可能',1,0,1);
insert into article values(7,'怎么没有可能',6,1,2);
insert into article values(8,'可能性是很大?,6,1,2);
insert into article values(9,'大象q医院了',2,0,2);
insert into article values(10,'护士是蚂?,9,1,3);
commit;

蚂蚁大战大象
    大象被打下?br />         蚂蚁也不好过
        瞎说
            没有瞎说
        大象q医院了
            护士是蚂?br />     怎么可能
        怎么没有可能
        可能性是很大?br />  

--用存储过E展现树状结构?br /> create or replace procedure p(v_pid article.pid%type,v_level binary_integer) is
  cursor c is select * from article where pid = v_pid;
  v_preStr varchar2(1024) := '';
begin
  for i in 0..v_level loop
    v_preStr := v_preStr || '****';
  end loop;

  for v_article in c loop
    dbms_output.put_line(v_preStr ||v_article.cont);
    if(v_article.isleaf=0) then
       p(v_artile.id,v_levle +1);
    end if;
  end loop;
end;



断点 2010-07-24 16:25 发表评论
]]>
trigger 触发?/title><link>http://www.aygfsteel.com/tfzhu/archive/2010/07/24/327016.html</link><dc:creator>断点</dc:creator><author>断点</author><pubDate>Sat, 24 Jul 2010 08:22:00 GMT</pubDate><guid>http://www.aygfsteel.com/tfzhu/archive/2010/07/24/327016.html</guid><wfw:comment>http://www.aygfsteel.com/tfzhu/comments/327016.html</wfw:comment><comments>http://www.aygfsteel.com/tfzhu/archive/2010/07/24/327016.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/tfzhu/comments/commentRss/327016.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/tfzhu/services/trackbacks/327016.html</trackback:ping><description><![CDATA[<p><span style="font-size: 12pt">--触发?br /> create table emp2_log<br /> (<br /> uname varchar2(20);<br /> action varchar2(10);<br /> atime date<br /> );</span></p> <p><span style="font-size: 12pt; color: #0000ff">create or replace trigger trig <br />   after insert or delete or update on emp2 for each row<br /> begin<br />   if inserting then<br />      insert into emp2_log values (USER,'insert',sysdate); --USER关键字,用户?br />   elsif updating then<br />      insert into emp2_log values (USER,'update',sysdate);<br />   elsif deleting then<br />      insert into emp2_log values (USER,'delete',sysdate);<br />   end if;<br /> end;</span></p> <p><span style="font-size: 12pt">update emp2 set sal = sal*2 where deptno = 30;<br /> select * from emp2_log;</span></p> <p><span style="font-size: 12pt; color: #0000ff">drop trigger trig;</span></p> <p><span style="font-size: 12pt">--直接执行Ӟ出现q反完整U束条gQ已扑ֈ子记录?br /> update dept set deptno = 99 where deptno = 10;</span></p> <p><span style="font-size: 12pt">--使用下面的,把子表一h新?br /> <span style="color: #0000ff">create or replace trigger trig<br />   after update on dept for each row<br /> begin<br />   update emp set deptno =:NEW.deptno where deptno =:OLD.deptno;<br /> end;</span></span></p> <p><span style="font-size: 12pt">update dept set deptno = 99 where deptno = 10;</span></p> <p><span style="font-size: 12pt">select * from emp;<br /> rollback;</span></p> <img src ="http://www.aygfsteel.com/tfzhu/aggbug/327016.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/tfzhu/" target="_blank">断点</a> 2010-07-24 16:22 <a href="http://www.aygfsteel.com/tfzhu/archive/2010/07/24/327016.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>function函数http://www.aygfsteel.com/tfzhu/archive/2010/07/24/327015.html断点断点Sat, 24 Jul 2010 08:19:00 GMThttp://www.aygfsteel.com/tfzhu/archive/2010/07/24/327015.htmlhttp://www.aygfsteel.com/tfzhu/comments/327015.htmlhttp://www.aygfsteel.com/tfzhu/archive/2010/07/24/327015.html#Feedback0http://www.aygfsteel.com/tfzhu/comments/commentRss/327015.htmlhttp://www.aygfsteel.com/tfzhu/services/trackbacks/327015.html--函数
create or replace function sal_tax
   (v_sal number)
   return number
is
begin
  if(v_sal < 2000) then
    return 0.10;
  elsif(v_sal < 2750) then
    return 0.15;
  else
    return 0.20;
  end if;
end;

数据库定义的函数money_to_chinese Q把数字转换正中文输出?/span>
create or replace function money_to_chinese(money in VARCHAR2)
   return varchar2 is
     c_money   VARCHAR2(12);
     m_string VARCHAR2(60) := '分角圆拾C万拾C?;
     n_string VARCHAR2(40) := '壹贰叁肆伍陆柒捌?;
     b_string VARCHAR2(80);
     n         CHAR;
     len       NUMBER(3);
     i         NUMBER(3);
     tmp       NUMBER(12);
     is_zero   BOOLEAN;
     z_count   NUMBER(3);
     l_money   NUMBER;
     l_sign    VARCHAR2(10);

   BEGIN
     l_money := abs(money);
     IF money < 0 THEN
       l_sign := '? ;
     ELSE
       l_sign := '';
     END IF;
     tmp      := round(l_money, 2) * 100;
     c_money := rtrim(ltrim(to_char(tmp, '999999999999')));
     len      := length(c_money);
     is_zero := TRUE;
     z_count := 0;
     i        := 0;
     WHILE i < len LOOP
       i := i + 1;
       n := substr(c_money, i, 1);
       IF n = '0' THEN
         IF len - i = 6 OR len - i = 2 OR len = i THEN
           IF is_zero THEN
             b_string := substr(b_string, 1, length(b_string) - 1);
             is_zero   := FALSE;
           END IF;
           IF len - i = 6 THEN
             b_string := b_string || '?;
           END IF;
           IF len - i = 2 THEN
             b_string := b_string || '?;
           END IF;
           IF len = i THEN
              IF (len = 1) THEN
                 b_string := '零圆?;
              ELSE
                 b_string := b_string || '?;
              END IF;
           END IF;
           z_count := 0;
         ELSE
           IF z_count = 0 THEN
             b_string := b_string || '?;
             is_zero   := TRUE;
           END IF;
           z_count := z_count + 1;
         END IF;
       ELSE
         b_string := b_string || substr(n_string, to_number(n), 1) ||
                     substr(m_string, len - i + 1, 1);
         z_count   := 0;
         is_zero   := FALSE;
       END IF;
     END LOOP;
     b_string := l_sign || b_string ;
     RETURN b_string;
exception
   --异常处理
    WHEN OTHERS THEN
       RETURN(SQLERRM);
END;



断点 2010-07-24 16:19 发表评论
]]>
procedure存储q程http://www.aygfsteel.com/tfzhu/archive/2010/07/24/327014.html断点断点Sat, 24 Jul 2010 08:17:00 GMThttp://www.aygfsteel.com/tfzhu/archive/2010/07/24/327014.htmlhttp://www.aygfsteel.com/tfzhu/comments/327014.htmlhttp://www.aygfsteel.com/tfzhu/archive/2010/07/24/327014.html#Feedback0http://www.aygfsteel.com/tfzhu/comments/commentRss/327014.htmlhttp://www.aygfsteel.com/tfzhu/services/trackbacks/327014.html--创徏存储q程Q?br /> create or replace procedure p
is
  cursor c is
  select * from emp2 for update;
begin
  for v_temp in c loop 
    if(v_temp.deptno = 10) then
      update emp2 set sal = sal+10 where current of c;
    elsif(v_temp.deptno = 20) then
      update emp2 set sal = sal+20 where current of c;
    else
       update emp2 set sal = sal+50 where current of c;
    end if;
  end loop;
  commit;
end;

--执行Q?br /> exec p;

begin
p;
end;


--带参数的存储q程Qin传入参数Q默认ؓ传入Qout传出?/span>
create or replace procedure p
   (v_a in number,v_b number,v_ret out number,v_temp in out number)
is
begin
  if(v_a >v_b) then
    v_ret := v_a;
  else
    v_ret := v_b;
  end if;
  v_temp :=v_temp +1;
end;

declare
  v_a number := 3;
  v_b number := 4;
  v_ret number;
  v_temp number := 5;
begin
  p(v_a,v_b,v_ret,v_temp);
  dbms_output.put_line(v_ret);
  dbms_output.put_line(v_temp);
end;



断点 2010-07-24 16:17 发表评论
]]>
cursor游标http://www.aygfsteel.com/tfzhu/archive/2010/07/24/327013.html断点断点Sat, 24 Jul 2010 08:14:00 GMThttp://www.aygfsteel.com/tfzhu/archive/2010/07/24/327013.htmlhttp://www.aygfsteel.com/tfzhu/comments/327013.htmlhttp://www.aygfsteel.com/tfzhu/archive/2010/07/24/327013.html#Feedback0http://www.aygfsteel.com/tfzhu/comments/commentRss/327013.htmlhttp://www.aygfsteel.com/tfzhu/services/trackbacks/327013.html--游标
declare
  cursor c is
    select * from emp;
  v_emp c%rowtype;
begin
  open c;
  loop
    fetch c into v_emp;
    exit when(c%notfound);
    dbms_output.put_line(v_emp.ename);
  end loop;
  close c;
end;

declare
  cursor c is
    select * from emp;
  v_emp emp%rowtype;
begin
  open c;
  fetch c into v_emp;
    while(c%found) loop
      dbms_output.put_line(v_emp.ename);
      fetch c into v_emp;
      --fetch c into v_emp; DW一条没有打华ͼ最后一条打?遍?br />       --dbms_output.put_line(v_emp.ename);
  end loop;
  close c;
end;


declare
  cursor c is
    select * from emp;
begin
  for v_emp in c loop
    dbms_output.put_line(v_emp.ename);
  end loop;
end;


--带参数的游标
declare
  cursor c(v_deptno emp.deptno%type,v_job emp.job%type)
  is
    select ename,sal from emp where deptno =v_deptno and job= v_job;
    --v_temp c%rowtype;
begin
  for v_temp in c(30,'CLERK') loop  --for自动打开游标?br />     dbms_output.put_line(v_temp.ename);
  end loop;
end;


--可更新的游标
declare
  cursor c
  is
    select * from emp2 for update;
    --v_temp c%rowtype;
begin
  for v_temp in c loop 
    if(v_temp.sal <2000) then
      update emp2 set sal = sal*2 where current of c;
    elsif(v_temp.sal = 5000) then
      delete from emp2 where current of c;
    end if;
  end loop;
  commit;
end;



断点 2010-07-24 16:14 发表评论
]]>
PL/SQL语句http://www.aygfsteel.com/tfzhu/archive/2010/07/24/327012.html断点断点Sat, 24 Jul 2010 08:03:00 GMThttp://www.aygfsteel.com/tfzhu/archive/2010/07/24/327012.htmlhttp://www.aygfsteel.com/tfzhu/comments/327012.htmlhttp://www.aygfsteel.com/tfzhu/archive/2010/07/24/327012.html#Feedback0http://www.aygfsteel.com/tfzhu/comments/commentRss/327012.htmlhttp://www.aygfsteel.com/tfzhu/services/trackbacks/327012.htmlPLSql是SQL的补充,PLq程语言procedure languageQSQLQStructured Query Language?br /> PLSql    带有分支、@环的语言QSQL没有分支、@环的语言?/span>

set serveroutput on;

-- 单的PL/SQL语句?/span>
declare
 v_name varchar2(20);
begin
  v_name :='myname';
  dbms_output.put_line(v_name);
end;
/


--语句块的l成
declare
 v_num number := 0 ;
begin
  v_num := 2/v_num;
  dbms_output.put_line(v_num);
exception
  when others then
     dbms_output.put_line('error');

end;
/

--变量声明的规?br /> 1、变量名不能够用保留字Q如from、select{?br /> 2、第一个字W必L字母
3、变量名最多包?0个字W?br /> 4、不要与数据库的表或者列同名
5、每一行只能声明一个变?/span>


--常用变量cd
1、binary_integerQ整敎ͼ主要用来计数而不是用来表C字D늱?br /> 2、numberQ数字类?br /> 3、charQ定长字W串
4、varchar2Q变长字W串
5、dateQ日?br /> 6、longQ长字符Ԍ最?GB
7、booleanQ布类型,可以取值true、false和null?/span>


--变量声明
declare
  v_temp number(1);
  v_count binary_integer :=0;
  v_sal number(7,2):= 4000.00;
  v_date date:= sysdate;
  v_pi constant number(3,2) := 3.14;  --constant相当java的final帔R
  v_valid boolean := false;
  v_name varchar2(20) not null :='MyName';
begin
  dbms_output.put_line('v_temp value:'|| v_temp);
end;
 

--变量声明Q?type属?br /> declare
  v_empno number(4);
  v_empno2 emp.empno%type;
  v_empno3 v_empno2%type;
begin
  dbms_output.put_line('Test');
end;


--单变量赋?br /> declare
  v_name varchar2(20);
  v_sal number(7,2);
  v_sal2 number(7,2);
  v_valid boolean :=false;
  v_date date;
begin
  va_name :='MyName';
  v_sal :=23.77;
  v_sal2 :=23.77;
  v_valid:=(v_sal = v_sal2);
  v_date:=to_date('1999-08-12 12:23:38','YYYY-MM-DD HH24:MI:SS');  
end;


--Table变量cdQ定义一U新的类型,是数l?/span>
declare
  type type_table_emp_empno is table of emp.empno%type index by binary_integer;
  v_empno type_table_emp_empno;
begin
  v_empnos(0) := 7369;
  v_empnos(2) := 7839;
  v_empnos(-1) := 9999;
  dbms_output.put_line(v_empnos(-1));
end;


--Record变量cd,cMjava的类的概c?/span>
declare
  type type_record_dept is record
  (
    deptno dept.deptno%type,
    dname dept.dname%type,
    loc dept.loc%type
  );
  v_tmp type_record_dept;
begin
  v_tmp.deptno := 50;
  v_tmp.dname := 'aaaa';
  v_tmp.loc := 'bj';
  dbms_output.put_line(v_temp.deptno||''||v_temp.dname);
end;


--使用%rowtype声明Record变量
declare
  v_temp dept%rowtype;
begin
  v_tmp.deptno := 50;
  v_tmp.dname := 'aaaa';
  v_tmp.loc := 'bj';
  dbms_output.put_line(v_temp.deptno||''||v_temp.dname);
end;


--SQL语句的运用,q回数据有且只有一条记录?br /> declare
  v_ename emp.ename%type;
  v_sal emp.sal%type;
begin
  select ename,sal into v_ename,v_sal from emp where empno = 7369;
  dbms_output.put_line(v_ename||''||v_sal);
end;

declare
  v_emp emp%rowtype;
begin
  select * into v_emp from emp where empno = 7369;
  dbms_output.put_line(v_emp.ename);
end;

declare
   v_deptno dept.deptno%type := 50;
   v_dname dept.dname%type := 'aaaa';
   v_loc dept.loc%type := 'bj';
begin
  insert into dept2 values (v_deptno,v_dname,v_loc);
  commit;
end;

declare
  v_deptno emp2.deptno%type := 10;
  v_count number ;
begin
  --update emp2 set sal = sal/2 where deptno = v_deptno;
  --select deptno into v_deptno from emp2 where empno = 7369;
  select count(*) into v_count from emp2;
  dbms_output.put_line(sql%rowcount||'条记录被影响');
  commit;
end;


DDL语句Q?br /> begin
  execute immediate 'create table T(nnn varchar2(20) default ''aaa'')';
end;

--if语句Q取?369的薪_如果<1200Q则输出'low'Q如?lt;2000则输?middle'Q否?high'
declare
  v_sal emp.sal%type;
begin
  select sal into v_sal from emp where empno = 7369;
  if(v_sal < 1200) then
    dbms_output.put_line('low');
  elsif(v_sal < 2000) then
    dbms_output.put_line('middle');
  else
    dbms_output.put_line('high');
  end if;
end;


--循环
declare
  i binary_integer := 1;
begin
  loop
    dbms_output.put_line(i);
    i := i+ 1;
    exit when (i >= 11);
  end loop;
end;

declare
  j binary_integer := 1;
begin
  while j< 11 loop
    dbms_output.put_line(j);
    j := j+ 1;
  end loop;
end;

begin
  for k in 1..10 loop
    dbms_output.put_line(k);
  end loop;

  for k in reverse 1..10 loop
    dbms_output.put_line(k);
  end loop;
end;


--错误处理
declare
  v_temp number(4);
begin
  select empno into v_temp from emp where deptno = 10;
exception
  when too_many_rows then
    dbms_output.put_line('太多记录?);
  when others then
    dbms_output.put_line('error');
end;


declare
  v_temp number(4);
begin
  select empno into v_temp from emp where empno = 2222;
exception
  when no_data_found then
    dbms_output.put_line('没数?);

end;


create table errorlog
(
id number primary key,
errcode number,
errmsg varchar2(1024),
errdate date
);


create sequence seq_errorlog_id start with 1 increment by 1;


declare
  v_deptno dept.deptno%type := 10;
  v_errmsg varchar2(1024);
begin
  delete from dept where deptno = v_deptno;
  commit;
exception
  when others then
  rollback;
  v_errcode := SQLCODE;  --关键字,代表出错的代码?br />   v_errmsg := SQLERRM;
  insert into errorlog values (seq_errorlog_id.nextval,v_errcode,v_errmsg,sysdate);
  commit;
end;



断点 2010-07-24 16:03 发表评论
]]>
数据库设计准则(W一、第二、第三范式说明)http://www.aygfsteel.com/tfzhu/archive/2010/07/18/326435.html断点断点Sun, 18 Jul 2010 02:23:00 GMThttp://www.aygfsteel.com/tfzhu/archive/2010/07/18/326435.htmlhttp://www.aygfsteel.com/tfzhu/comments/326435.htmlhttp://www.aygfsteel.com/tfzhu/archive/2010/07/18/326435.html#Feedback0http://www.aygfsteel.com/tfzhu/comments/commentRss/326435.htmlhttp://www.aygfsteel.com/tfzhu/services/trackbacks/326435.html构造数据库必须遵@一定的规则。在关系数据库中Q这U规则就是范式?/span>关系数据库中的关pdL一定的要求Q即满不同的范式。目前关pL据库有六U范式:W一范式Q?NFQ、第二范式(2NFQ、第三范式(3NFQ、第四范式(4NFQ、第五范式(5NFQ和W六范式Q?NFQ。满x低要求的?/span>式是W一范式Q?NFQ。在W一范式的基上进一步满x多要求的UCؓW二范式Q?NFQ,其余范式以次cL。一般说来,数据库只需满W三范式Q?NFQ就行了?/span>


W一范式Q?NFQ:无重复的列?/span>
    所谓第一范式Q?NFQ是指数据库表的每一列都是不可分割的基本数据,同一列中不能有多?/span>
|卛_体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间ؓ一对多关系。在W一范式Q?NFQ中表的每一行只包含一个实例的信息。简而言之,W一范式是无重复的列?br />    
   数据库表中的字段都是单一属性的Q不可再分。这个单一属性由基本cd构成Q包括整型、实数、字W型、逻辑型、日期型{?/span>

说明Q在M一个关pL据库中,W一范式Q?NFQ是对关pL式的基本要求Q不满W一范式Q?NFQ的数据库就不是关系数据库?

 

W二范式Q?NFQ:属性完全依赖于主键[消除部分子函C赖]?br />  
    W二范式Q?NFQ是在第一范式Q?NFQ的基础上徏立v来的Q即满W二范式Q?NFQ必d?/span>
第一范式Q?NFQ。第二范式(2NFQ要求数据库表中的每个实例或行必d以被惟一地区分。ؓ?/span>现区分通常需要ؓ表加上一个列Q以存储各个实例的惟一标识。例如员工信息表中加上了员工~号Qemp_idQ列Q因为每个员工的员工~号是惟一的,因此每个员工可以被惟一区分。这个惟一属性列被称Z关键字或主键、主码?
    W二范式Q?NFQ要求实体的属性完全依赖于d键字。所谓完全依赖是指不能存在仅依赖?/span>
关键字一部分的属性,如果存在Q那么这个属性和d键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关pRؓ实现区分通常需要ؓ表加上一个列Q以存储各个实例?/span>惟一标识。简而言之,W二范式是属性完全依赖于主键?

W三范式Q?NFQ:属性不依赖于其它非d性[消除传递依赖]?/span>
   
    满W三范式Q?NFQ必d满W二范式Q?NFQ。简而言之,W三范式Q?NFQ要求一个数据库表中不包含已在其它表中已包含的非d键字信息。例如,存在一个部门信息表Q其中每?/span>部门有部门编Pdept_idQ、部门名U、部门简介等信息。那么在的员工信息表中列出部门编号后?/span>不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。如果不存在部门信息表,?/span>ҎW三范式Q?NFQ也应该构徏它,否则׃有大量的数据冗余。简而言之,W三范式是属性不?/span>赖于其它非主属性?br />      所谓传递函C赖,指的是如果存?A → B → C"的决定关p,则C传递函C赖于A?/span>



断点 2010-07-18 10:23 发表评论
]]>
Sequence序列http://www.aygfsteel.com/tfzhu/archive/2010/07/17/326424.html断点断点Sat, 17 Jul 2010 14:08:00 GMThttp://www.aygfsteel.com/tfzhu/archive/2010/07/17/326424.htmlhttp://www.aygfsteel.com/tfzhu/comments/326424.htmlhttp://www.aygfsteel.com/tfzhu/archive/2010/07/17/326424.html#Feedback0http://www.aygfsteel.com/tfzhu/comments/commentRss/326424.htmlhttp://www.aygfsteel.com/tfzhu/services/trackbacks/326424.html序列QsequenceQ生一个独一无二的序列,是oracleҎ的?/p>

create table article
(
id number,
title varchar2(1024),
cont long
);
insert into article values(seq.nextval,'a','b');

select * from user_sequences; --查询序列

create sequence seq; --创徏序列seq对象
select seq.nextval from dual;
drop sequence seq;



断点 2010-07-17 22:08 发表评论
]]>
View视图http://www.aygfsteel.com/tfzhu/archive/2010/07/17/326373.html断点断点Sat, 17 Jul 2010 03:03:00 GMThttp://www.aygfsteel.com/tfzhu/archive/2010/07/17/326373.htmlhttp://www.aygfsteel.com/tfzhu/comments/326373.htmlhttp://www.aygfsteel.com/tfzhu/archive/2010/07/17/326373.html#Feedback0http://www.aygfsteel.com/tfzhu/comments/commentRss/326373.htmlhttp://www.aygfsteel.com/tfzhu/services/trackbacks/326373.html视图Q一个虚表,也是一个子查询Q是存储在数据字兔R的一条select语句?
视图Q基于一个表或多个表或视囄逻辑表,本n不包含数据,通过它可以对表里面的数据q行查询和修改,视图Z的表UCؓ?/span>


视图的优点:
1、对数据库的讉KQ可以有选择性的选取数据库里的一部分信息Q?span style="color: #0000ff">整张表的信息不对外开?/span>?.用户通过单的查询可以从复杂查询中得到l果?br /> 视图的缺点:
如果一个表的结构改了,相应的视囑֦果用C该表的字D,也要q行修改Q?span style="color: #0000ff">增加l护工作?/span>?/span>


单视图:只从单表里获取数据,不包含函数和数据l,可以实现DML操作?/span>
复杂视图Q从多表获取数据Q包含函数和数据l,不可以DML操作?br />

视图的创建:
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name
[(alias[, alias]...)]
AS subquery
[WITH CHECK OPTION [CONSTRAINT constraint]]
[WITH READ ONLY]

其中Q?br /> OR REPLACEQ若所创徏的试囑ַl存在,ORACLE自动重徏该视图;
FORCEQ不基表是否存在ORACLE都会自动创徏该视图;
NOFORCEQ只有基表都存在ORACLE才会创徏该视图:
aliasQؓ视图产生的列定义的别名;
subqueryQ一条完整的SELECT语句Q可以在该语句中定义别名Q?br style="font-family: " /> WITH CHECK OPTION Q插入或修改的数据行必须满视图定义的约束;
WITH READ ONLY Q该视图上不能进行Q何DML操作?/span>


例如Q?br />        CREATE OR REPLACE VIEW dept_sum_vw
               (name,minsal,maxsal,avgsal)
       AS SELECT d.dname,min(e.sal),max(e.sal),avg(e.sal)
       FROM    emp e,dept d
       WHERE e.deptno=d.deptno
       GROUP BY d.dname;
查询视图Q?span style="color: #008000">select * from user_views;
修改视图Q?span style="color: #008000">通过OR REPLACE 重新创徏同名视图卛_?/span>
删除视图Q?span style="color: #008000">DROP VIEW VIEW_NAME;

视图的定义原则:
1.视图的查询可以用复杂的SELECT语法Q包括连?分组查询和子查询Q?br /> 2.在没有WITH CHECK OPTION?READ ONLY 的情况下Q查询中不能使用ORDER BY 子句Q?br /> 3.如果没有为CHECK OPTIONU束命名Q系l会自动Z命名QŞ式ؓSYS_Cn;
4.OR REPLACE选项可以不删除原视图便可更改其定义ƈ重徏Q或重新授予对象权限?br />
视图上的DML操作Q应遵@的原则:
1.单视囑֏以执行DML操作Q?br /> 2.在视囑֌含GROUP 函数QGROUP BY子句QDISTINCT关键字时不能删除数据行;
3.在视图不出现下列情况时可通过视图修改数据或插入数据:
   a.视图中包含GROUP 函数QGROUP BY子句QDISTINCT关键字;
   b.使用表达式定义的列;
   c .ROWNUM伪列?br />   d.中未在视图中选择的其他列定义为非IZ无默认倹{?/p>


WITH CHECK OPTION 子句限定Q?br /> 通过视图执行的INSERTS和UPDATES操作不能创徏该视图检索不到的数据?/span>Q因为它会对插入或修改的数据行执行完整性约束和数据有效性检查?br /> 例如Q?br />            CREATE OR REPLACE VIEW vw_emp20
           AS SELECT * FROM emp
           WHERE deptno=20
           WITH CHECK OPTION constraint vw_emp20_ck;
          视图 已徏立?br />             查询l果Q?br />            SELECT empno,ename,job FROM vw_emp20;
          EMPNO                ENAME                JOB
---------------------           --------------          -------------
              7369                 SMITH                CLERK
              7566                 JONES               MANAGER
              7902                 FORD                ANALYST
          修改Q?br />                 UPDATE vw_emp20
                SET        deptno=20
                WHERE   empno=7902;
           生错误:
               UPDATE vw_emp20
                              *
               ERROR 位于W一行:
               ORA-01402Q视图WITH CHECK OPTION q反WHERE 子句



断点 2010-07-17 11:03 发表评论
]]>
Index索引http://www.aygfsteel.com/tfzhu/archive/2010/07/17/326371.html断点断点Sat, 17 Jul 2010 02:54:00 GMThttp://www.aygfsteel.com/tfzhu/archive/2010/07/17/326371.htmlhttp://www.aygfsteel.com/tfzhu/comments/326371.htmlhttp://www.aygfsteel.com/tfzhu/archive/2010/07/17/326371.html#Feedback0http://www.aygfsteel.com/tfzhu/comments/commentRss/326371.htmlhttp://www.aygfsteel.com/tfzhu/services/trackbacks/326371.html
表徏立烦引后在插入数据时Q一要把数据写入表里Q二要把该数据记入烦引里面,因此查询效率高、但插入效率低?br />
create index idx_stu_email on stu(email,class);  --l合索引Q查询效率高?br /> drop index idx_stu_email;
select * from user_indexes; -- 查询索引


断点 2010-07-17 10:54 发表评论
]]>
Oracle数据字典http://www.aygfsteel.com/tfzhu/archive/2010/07/17/326370.html断点断点Sat, 17 Jul 2010 02:52:00 GMThttp://www.aygfsteel.com/tfzhu/archive/2010/07/17/326370.htmlhttp://www.aygfsteel.com/tfzhu/comments/326370.htmlhttp://www.aygfsteel.com/tfzhu/archive/2010/07/17/326370.html#Feedback0http://www.aygfsteel.com/tfzhu/comments/commentRss/326370.htmlhttp://www.aygfsteel.com/tfzhu/services/trackbacks/326370.htmlOracle的数据库对象分ؓ五种Q表Q视图,序列Q烦引和同义词?/span>

select * from  user_tables  -- 当前用户下有多少张表
select * from  user_views  -- 当前用户下有多少张视?br /> select * from user_sequences; --查询序列
select * from user_indexes; -- 查询索引

select * from  user_constraints  -- 当前用户下有多少U束
select * from  dictionary  --数据字典表的?br />

断点 2010-07-17 10:52 发表评论
]]>
DDLQdata definition languageQ介l?/title><link>http://www.aygfsteel.com/tfzhu/archive/2010/07/17/326365.html</link><dc:creator>断点</dc:creator><author>断点</author><pubDate>Sat, 17 Jul 2010 01:43:00 GMT</pubDate><guid>http://www.aygfsteel.com/tfzhu/archive/2010/07/17/326365.html</guid><wfw:comment>http://www.aygfsteel.com/tfzhu/comments/326365.html</wfw:comment><comments>http://www.aygfsteel.com/tfzhu/archive/2010/07/17/326365.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/tfzhu/comments/commentRss/326365.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/tfzhu/services/trackbacks/326365.html</trackback:ping><description><![CDATA[<p><span style="font-size: 12pt; font-family: 宋体">DDLQdata definition languageQ:DDL比DML要多Q主要的命o?span style="color: #0000ff">CREATE、ALTER、DROP</span>{,DDL主要是用在定义或改变表(TABLEQ的l构Q数据类型,表之间的链接和约束等初始化工作上Q他们大多在建立表时使用?br /> <br /> 数据cdQVARCHAR2(50)最?K(4096字节)、CHAR(1)最?k、NUMBER(10,6)、NUMBER(6)、DATE?br /> LONG 变长字符Ԍ最大长度达2G?/span></p> <p> </p> <p><span style="color: #0000ff">U束条g?个:非空、唯一、主键、外键、check?br /> </span><br /> create table stu<br /> (<br /> id number(6), --primary key<br /> name varchar2(20) constraint stu_name_nn not null, --stu_name_nn别名<br /> sex number(1),<br /> age number(3),<br /> sdate date,<br /> grade number(2) default 1,<br /> class number(4), --references class(id)<br /> email varchar2(50),<br /> --email varchar2(50) unique  --字段U约束,不能有重复?br /> <span style="color: #0000ff">constraint stu_name_email_uni <span style="color: #008000">unique(name,email), </span>--表U束<br /> constraint stu_id_pk <span style="color: #008000">primary key(id),        </span>--表U束<br /> constraint stu_class_fk<span style="color: #008000"> foreign key(class) references class(id)</span> --被参考字D必L主键<br /> </span>);</p> <p>create table class<br /> (<br /> id number(4) <span style="color: #008000">primary key,<br /> </span>name varchar2(20) not null<br /> )</p> <p><br /> alter table stu add(addr varchar2(100)); --对已存在的表新增字段<br /> alter table stu modify(addr varchar2(150)); --对字D修?br /> alter table stu drop (addr); --删除一个字D?br /> alter table stu drop constraint stu_class_fk;<br /> delete from class;<br /> drop table class;</p> <img src ="http://www.aygfsteel.com/tfzhu/aggbug/326365.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/tfzhu/" target="_blank">断点</a> 2010-07-17 09:43 <a href="http://www.aygfsteel.com/tfzhu/archive/2010/07/17/326365.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DMLQdata manipulation languageQ介l?/title><link>http://www.aygfsteel.com/tfzhu/archive/2010/07/11/325782.html</link><dc:creator>断点</dc:creator><author>断点</author><pubDate>Sun, 11 Jul 2010 07:43:00 GMT</pubDate><guid>http://www.aygfsteel.com/tfzhu/archive/2010/07/11/325782.html</guid><wfw:comment>http://www.aygfsteel.com/tfzhu/comments/325782.html</wfw:comment><comments>http://www.aygfsteel.com/tfzhu/archive/2010/07/11/325782.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/tfzhu/comments/commentRss/325782.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/tfzhu/services/trackbacks/325782.html</trackback:ping><description><![CDATA[<p><span style="color: #0000ff">SQL语言共分为四大类Q数据查询语aDQLQ数据操U语aDMLQ数据定义语aDDLQ数据控制语aDCL?/span></p> <p>DMLQdata manipulation languageQ:它们是SELECT、UPDATE、INSERT、DELETEQ就象它的名字一Pq?条命令是用来Ҏ据库里的数据q行操作的语a?/p> <p>conn sys/sys as sysdba;<br /> drop user pcisv6 cascade;<br /> exp --备䆾scott用户下的?br /> --创徏用户,identified证相当是密码Qquota配额是分配I间?br /> <span style="color: #0000ff">create user pcisv6 identified by 11 default tablespace core6 quota 10M on corev6</span><br /> <span style="color: #0000ff">grant create session,create table,create view to pcisv6;</span>   --授权Qsession是用于登录的<br /> imp --导入scott用户下的?br /> <br /> SELECTQ?br /> <span style="color: #0000ff">select rownum r,ename from emp;    --rownum行数Q目前只能?lt;?lt;=, 而没有直?gt;?的写法?br /> </span>select ename, sal     --求薪水最高的??br />  from (select ename, sal from emp order by sal desc)<br />  where rownum <= 5;<br /> <br /> --求薪水最高的??0?br /> select ename,sal,rownum r from emp order by sal desc; --r 排序混ؕ<br /> select ename,sal,rownum r from (select ename,sal from emp order by sal desc); --此时r序号按新表排?br /> <span style="color: #0000ff">select ename, sal    -- 此处为结?br />   from (select ename, sal, rownum r<br />           from (select ename, sal from emp order by sal desc))<br />  where r >= 6<br />    and r <= 10;</span></p> <br /> INSERTQ?br /> <span style="color: #0000ff">insert into dept values(50,'game','bj');    --整条记录</span><br /> rollback;<br /> create table dept2 as selet * from emp; --创徏dept2?br /> <span style="color: #0000ff">insert into dept2(deptno,dname) values(60,'game2');    --有选择的字D|?/span><br /> <span style="color: #0000ff">insert into dept2 <span style="color: #0000ff">select * from dept;    --插入一个表, 2个表l构一?/span></span> <br /> <p><br /> UPDATEQ?br /> update emp2 set sal=sal*12,ename=ename||'-' where deptno=10;<br /> <br /> DELETEQ?br /> delete from dept2 where deptno<25;<br /> rollback;<br /> <br /> TRANSACTIONQ?br /> transaction 起始一条dml语句Q在commit、rollback时完成?br /> transaction 在执行dml后,在其后有执行了ddl、dclӞ事务自动提交?br /> 在正帔R出exitӞ事务自动提交?br /> 在非正常退出时Q事务回滚?br /> <br /> ------------------------------------------------------------<br /> 例子Q?br /> ?个表SQCQSC <br /> SQSNOQSNAMEQ代表(学号Q姓名) <br /> CQCNOQCNAMEQCTEACHERQ代表(译֏Q课名,教师Q?<br /> SCQSNOQCNOQSCGRADEQ代表(学号Q课hl) <br /> 问题Q?<br /> 1Q找出没选过“黎明”老师的所有学生姓名?<br /> 2Q列?门以上(?门)不及格学生姓名及q_成W?<br /> 3Q即学过1可E有学过2可所有学生的姓名?<br /> L标准SQL语言写出{案Q方a也行Q请说明是用什么方aQ?</p> <p>1. <br /> select sname froms<br />   join sc on (s.sno = sc.sno)<br />   join c(c.cno = sc.cno)<br />  where c.cteacher <> 'liming';<br /> 2. <br /> select sname<br />  where sno in (select sno<br />                  from sc<br />                 where scgrade < 60<br />                 group by sno<br />                having count(*) >= 2);<br /> 3. <br /> select sname<br />  where sno in (select sno<br />                  from sc<br />                 where cno = 1<br />                   and sno in (select sno from sc where cno = 2));</p> <br /> <img src ="http://www.aygfsteel.com/tfzhu/aggbug/325782.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/tfzhu/" target="_blank">断点</a> 2010-07-11 15:43 <a href="http://www.aygfsteel.com/tfzhu/archive/2010/07/11/325782.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQLl合查询例子http://www.aygfsteel.com/tfzhu/archive/2010/07/06/325409.html断点断点Tue, 06 Jul 2010 15:25:00 GMThttp://www.aygfsteel.com/tfzhu/archive/2010/07/06/325409.htmlhttp://www.aygfsteel.com/tfzhu/comments/325409.htmlhttp://www.aygfsteel.com/tfzhu/archive/2010/07/06/325409.html#Feedback0http://www.aygfsteel.com/tfzhu/comments/commentRss/325409.htmlhttp://www.aygfsteel.com/tfzhu/services/trackbacks/325409.htmlselect e1.ename,e2.ename from emp e1 join emp e2 on (e1.mgr=e2.empno); --自连接,从e2中取出e1的经理h?br /> select ename,dname from emp e left join dept d on (e.deptno=d.deptno);   --左外q接
select ename,dname from emp e right outer join dept d on (e.deptno=d.deptno);   --叛_q接
select ename,dname from emp e full join dept d on (e.deptno=d.deptno);    --全连?/p>


--求部门中哪些人的薪水最?br /> select ename,sal from emp
join (select max(sal) max_sal,deptno from emp group by deptno) t
on (emp.sal = t.max_sal and emp.deptno = t.deptno);

--求部门^均薪水的{
select deptno,avg_sal,grade from
(select deptno,avg(sal) avg_sal from emp group by deptno) t
join salgrade s on (t.avg_sal between s.losal and s.hisal);


--求部门^均的薪水{
select avg(grade) from
(select deptno,ename,grade from emp join salgrade s on (emp.sal between s.losal and s.hisal )) t
group by deptno;

--雇员中有哪些人是l理?br /> select ename from emp where empno in (select distinct mgr from emp);


--不准用组函数Q求薪水的最高倹{采用的是自q接?br /> select distinct sal from emp where sal not in
(select distinct e1.sal from emp e1 join emp e2 on (e1.sal < e2.sal));


--求^均薪水最高的部门的部门编受嵌套的l函数?br /> select deptno,avg_sal from
(select avg(sal) avg_sal,deptno from emp group by deptno)
where avg_sal =
(select max(avg(sal)),deptno from emp group by deptno;

 

--求^均薪水的{最低的部门的部门名U?br /> select dname,t1.deptno,grade,avg_sal from
  (
   select deptno,grade,avg_sal from
     (select deptno,avg(sal) avg_sal from emp group by deptno) t
     join salgrade s on (t.avg_sal between s.losal and s.hisal)
  )
   t1
   join dept on (t1.deptno = dept.deptno)
)
where t1.grade =
(
 select min(grade) from
     (select deptno,grade,avg_sal from
  (select deptno,grade,avg(sal) avg_sal from emp group by deptno) t
   join salgrade s on (t.avg_sal between s.losal and s.hisal)
     )
)


--求^均薪水的{最低的部门的部门名U。采用视图?br /> conn sys/sys as sysdba;
grant create table,create view to scott;

create view v$_dept_avg_sal_info as
select deptno,grade,avg_sal from
  (select deptno,grade,avg(sal) avg_sal from emp group by deptno) t
   join salgrade s on (t.avg_sal between s.losal and s.hisal);

select dname,t1.deptno,grade,avg_sal from
   v$_dept_avg_sal_info t1
   join dept on (t1.deptno = dept.deptno)
)
where t1.grade =
(
 select min(grade) from  v$_dept_avg_sal_info
)

-- 比普通员工的最高薪水还要高的经理h名称?br /> select ename from emp
where empno in (select distinct mgr from emp where mgr is not null)
and sal >
(
  select max(sal) from emp where empno not in
  (select distinct mgr from emp where mgr is not null)
)

 



断点 2010-07-06 23:25 发表评论
]]>
SQL1999表连?/title><link>http://www.aygfsteel.com/tfzhu/archive/2010/07/06/325408.html</link><dc:creator>断点</dc:creator><author>断点</author><pubDate>Tue, 06 Jul 2010 15:18:00 GMT</pubDate><guid>http://www.aygfsteel.com/tfzhu/archive/2010/07/06/325408.html</guid><wfw:comment>http://www.aygfsteel.com/tfzhu/comments/325408.html</wfw:comment><comments>http://www.aygfsteel.com/tfzhu/archive/2010/07/06/325408.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/tfzhu/comments/commentRss/325408.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/tfzhu/services/trackbacks/325408.html</trackback:ping><description><![CDATA[<p><span style="color: #0000ff">--1992qsql标准Q连接条件和qo条g写在一赗?/span><br /> select ename,dname,grade <br /> from emp e,dept d,salgrade s <br /> where e.deptno = d.deptno and e.sal between s.losal and s.hisal and job<>'CLERK'; <br /> </p> <p><span style="color: #0000ff">--1999qsql标准,q接条g和过滤条件分开</span><br /> select ename,dname,grade <br /> from emp e join dept d on (e.deptno = d.deptno)<br /> join salgrade s on (e.sal between s.losal and s.hisal)<br /> where ename not like '_A%'; <br /> </p> <img src ="http://www.aygfsteel.com/tfzhu/aggbug/325408.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/tfzhu/" target="_blank">断点</a> 2010-07-06 23:18 <a href="http://www.aygfsteel.com/tfzhu/archive/2010/07/06/325408.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>常用sql函数http://www.aygfsteel.com/tfzhu/archive/2010/06/30/324932.html断点断点Wed, 30 Jun 2010 15:38:00 GMThttp://www.aygfsteel.com/tfzhu/archive/2010/06/30/324932.htmlhttp://www.aygfsteel.com/tfzhu/comments/324932.htmlhttp://www.aygfsteel.com/tfzhu/archive/2010/06/30/324932.html#Feedback0http://www.aygfsteel.com/tfzhu/comments/commentRss/324932.htmlhttp://www.aygfsteel.com/tfzhu/services/trackbacks/324932.htmlselect chr(65) from dual;
select ascii('A') from dual;  --求编?br /> select ename from emp where lower(ename) like '_a%'  -- upper大写
select round(23.652,2) from dual; -- 四舍五入 23.65,round(23.652)?4
select substr(ename,1,3) from emp; --从第一个开始,L?个?br /> select ename,sal,deptno from emp where length(sal)>3;

select to_char(sal,'$99,999.9999') from emp;  --'L00000.0000'千位不够?
select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual; 

select ename,hiredate from emp where hiredate>to_date('1981-2-20 12:34:56','YYYY-MM-DD HH24:MI:SS');

select sal from emp where sal>to_number('$1,250.00','$9,999.99');

select ename,sal*12 + nvl(comm,0) from emp; --对空值处?br />


l函敎ͼ
select max(sal) from emp;
select min(sal) from emp;
select avg(sal) from emp;
select sum(sal) from emp;
select count(*) from emp; -- *求出总记录数, count(comm)求出该列不ؓI的倹{?br /> select deptno,job,max(sal) from emp group by deptno,job;  --按照条gl合分组
select ename from emp where sal =(select max(sal) from emp); --子查?br />
update Web_Bas_Edr_Rsn set c_rsn_txt=REPLACE(c_rsn_txt,'天|','北京') where  c_rsn_txt like '%天|%' --扚w替换

-- having对分l进行限Ӟwhere对单行限?/span>
select avg(sal) from emp where sal>1000 group by deptno having avg(sal) >1500 order by avg(sal) desc;



断点 2010-06-30 23:38 发表评论
]]>
常用sql操作http://www.aygfsteel.com/tfzhu/archive/2010/06/30/324837.html断点断点Tue, 29 Jun 2010 16:45:00 GMThttp://www.aygfsteel.com/tfzhu/archive/2010/06/30/324837.htmlhttp://www.aygfsteel.com/tfzhu/comments/324837.htmlhttp://www.aygfsteel.com/tfzhu/archive/2010/06/30/324837.html#Feedback0http://www.aygfsteel.com/tfzhu/comments/commentRss/324837.htmlhttp://www.aygfsteel.com/tfzhu/services/trackbacks/324837.htmlsqlplus sys/sys as sysdba;
alert user scott account unlock;
desc emp;
select ename,sal*12 from emp;

select sysdate from dual; --dual为空?/span>

select ename,sal*12 annual_sal from emp; --别名
--数?null 为null
select ename||sal from emp; --g
select ename||'aaa''bbb' from emp; --?的拼?''替换?
select distinct deptno,job from emp; --L2个字D值的l合

select * from emp where deptno=10 and ename='CLARK';
select ename,sal from emp where sal>1500;
select ename,sal from emp where deptno<>10;
select ename,sal from emp where sal between 800 and 1500; -- sal>=800 and sal<=1500
select ename,sal,comm from emp where comm is null; --is not null
select ename,sal,comm from emp where sal in (800,1500); -- not in (800,1500)

select ename from emp where ename like '_A%' -- %?个或多个Q???br /> select ename from emp where ename like '%\%%' -- 名字含有%Q需要\{义字W处?br /> select ename from emp where ename like '%$%%' escape '$'  -- 可以使用$作ؓ转义字符

select ename,sal,deptno from emp order by deptno asc,ename desc;  -- 升序ascQ降?desc



断点 2010-06-30 00:45 发表评论
]]>
存储q程-1http://www.aygfsteel.com/tfzhu/archive/2010/01/31/311399.html断点断点Sun, 31 Jan 2010 09:48:00 GMThttp://www.aygfsteel.com/tfzhu/archive/2010/01/31/311399.htmlhttp://www.aygfsteel.com/tfzhu/comments/311399.htmlhttp://www.aygfsteel.com/tfzhu/archive/2010/01/31/311399.html#Feedback0http://www.aygfsteel.com/tfzhu/comments/commentRss/311399.htmlhttp://www.aygfsteel.com/tfzhu/services/trackbacks/311399.html需求:对WEB_CUS_CLENT机构为空的进行修改,通过WEB_CUS_CLENT客户~码查找投保人WEB_PLY_APPLICANT的申请单P通过甌单号查找web_PLY_BASE查找承保机构?/span>

CREATE OR REPLACE PROCEDURE V6.P_WEB_CUS_CLINT_DPT
IS

--增量抽取客户信息数据
v_task_start_date          date                    ;
v_task_end_date            date                    ;
v_sql_code                 number       :=0        ;
v_sql_msg                  VARCHAR2(4000) := ''    ; --sql错误信息
V_Cus_Client               Web_Cus_Client%rowtype  ;
V_UPD_TM                   date;
V_APP_NO                   varchar2(50);
V_DPT_CDE                  varchar2(50);
V_COUNT                    number(4,0);

cursor CUR_WEB_CUS_ADD is
select *
from Web_Cus_Client
a where a.C_DPT_CDE is null;

BEGIN
  SELECT SYSDATE INTO v_task_start_date FROM dual; --d开始时间和dl束旉
  SELECT SYSDATE INTO v_task_end_date FROM dual;
  v_sql_msg := '对WEB_CUS_CLENT机构为空的进行修?;
 
 open CUR_WEB_CUS_ADD;
     loop
       fetch CUR_WEB_CUS_ADD into V_Cus_Client;
       exit when CUR_WEB_CUS_ADD% notfound;
       v_sql_msg := V_Cus_Client.c_Clnt_Cde||'对WEB_CUS_CLENT机构为空的进行修?;
       V_COUNT :=0;
     select count(1) into V_COUNT from WEB_PLY_APPLICANT a where a.C_APP_CDE=V_Cus_Client.c_Clnt_Cde;
     if(V_COUNT>0) then
       select max(T_CRT_TM) into V_UPD_TM from WEB_PLY_APPLICANT a where a.C_APP_CDE=V_Cus_Client.c_Clnt_Cde;
       select max(C_APP_NO) into V_APP_NO from WEB_PLY_APPLICANT a where a.T_CRT_TM=V_UPD_TM and a.C_APP_CDE=V_Cus_Client.c_Clnt_Cde;
       select C_DPT_CDE into V_DPT_CDE from web_PLY_BASE a where a.C_APP_NO=V_APP_NO;
       update WEB_CUS_CLIENT a set a.C_DPT_CDE=V_DPT_CDE where a.C_CLNT_CDE=V_Cus_Client.c_Clnt_Cde;
     end if;
     commit;
   end loop;
 close CUR_WEB_CUS_ADD;

 --写Q务日?br />   v_sql_code    :=0;
  v_sql_msg     := 'NORMAL, SUCCESSFUL COMPLETION';
  SELECT SYSDATE INTO v_task_end_date FROM dual;
 INSERT INTO LOAD_HIS_LOG
   (  SYS
     ,JOBNAME
     ,START_DATE
     ,END_DATE
     ,RUN_DATE
     ,SQL_CODE
     ,SQL_STATE
   )
  VALUES
    ('V5_MID'
     ,'P_WEB_CUS_CLINT_DPT'
     ,v_task_start_date
     ,v_task_end_date
     ,to_char((v_task_end_date - v_task_start_date) * 86400)
     ,v_sql_code
     ,v_sql_msg
    );
  COMMIT;

EXCEPTION
  WHEN OTHERS THEN
    v_sql_code := SQLCODE;
    v_sql_msg  := v_sql_msg || ' ' || ' : ' || SQLERRM;
    SELECT SYSDATE INTO v_task_end_date FROM dual;  --dl束旉
    ROLLBACK;
    INSERT INTO LOAD_HIS_LOG
   (  SYS
     ,JOBNAME
     ,START_DATE
     ,END_DATE
     ,RUN_DATE
     ,SQL_CODE
     ,SQL_STATE
   )
  VALUES
    ('V5_MID'
     ,'P_WEB_CUS_CLINT_DPT'
     ,v_task_start_date
     ,v_task_end_date
     ,to_char((v_task_end_date - v_task_start_date) * 86400)
     ,v_sql_code
     ,v_sql_msg
    );
  COMMIT;
END ;



断点 2010-01-31 17:48 发表评论
]]>
վ֩ģ壺 Ϫ| | | ƽ| | ï| ۷| | | | ݶ| ʯׯ| | ½| | | | | ˻| Թ| | ն| | | Ӽ| Զ| ұ| Ͽ| | | ƽ| | | Ϫ| | | | | | | |