网络工程师应掌握的50个路由器知识要点
2006-11-16 20:36
423 查看
两种表复制语句:eg:select * into destTbl from srcTbl 注:destTbl 表可不存在,运行是自动创建insert into destTbl(fld1, fld2) select fld1, 5 from srcTbl 注:5是常量,不是来自表中的字段 .destTbl表要存在 oracle 查询:http://www.iteye.com/topic/578724 删除表中重复记录:1.记录完全相同select distinct * into #Tmp from tableNamedrop table tableNameselect * into tableName from #Tmpdrop table #Tmp2.有字段相同
delete from tbl where rowid not in (select max(rowid) from tbl tgroup by t.col1, t.col2);
delete from tbl where (col1, col2) in (select col1,col2 from tblgroup bycol1,col2 having count(*) >1)
and rowid not in(select min(rowid)from tbl group by col1,col2 havingcount(*) >1)
--===============带参数的游标==================--DECLARE dept_code emp.deptno%TYPE; --声明列类型变量三个 emp_code emp.empno%TYPE; emp_name emp.ename%TYPE; CURSOR emp_cur(deptparam NUMBER) IS SELECT empno, ename FROM EMP WHERE deptno = deptparam; --声明显示游标BEGIN dept_code := &部门编号; --请用户输入想查看的部门编号 OPEN emp_cur(dept_code); --打开游标 LOOP --死循环 FETCH emp_cur INTO emp_code, emp_name; --提取游标值赋给上面声明的变量 EXIT WHEN emp_cur%NOTFOUND; --如果游标里没有数据则退出循环 DBMS_OUTPUT.PUT_LINE(emp_code || '' || emp_name); --输出查询 END LOOP; CLOSE emp_cur; --关闭游标END;
--=================REF游标==================--ACCEPT tab FROMPT '你想查看什么信息?员工(E)或部门信息(D):'; --使用ACCEPT命令弹出对话框让用户输入数据DECLARE TYPE refcur_t IS REF CURSOR; --声明REF游标类型 refcur refcur_t; --声明REF游标类型的变量 pid NUMBER; p_name VARCHAR2(100); selection VARCHAR2(1) := UPPER(SUBSTR('&tab', 1, 1)); --截取用户输入的字符串并转换为大写BEGIN IF selection = 'E' THEN --如果输入的是'E',则打开refcurr游标,并将员工表查询出来赋值给此游标 OPEN refcur FOR SELECT EMPNO ID, ENAME NAME FROM EMP; DBMS_OUTPUT.PUT_LINE('=====员工信息====='); ELSIF selection = 'D' THEN --如果输入是'D',则打开部门表 OPEN refcur FOR SELECT deptno id, dname name FROM DEPT; DBMS_OUTPUT.PUT_LINE('=====部门信息======'); ELSE --否则返回结束 DBMS_OUTPUT.PUT_LINE('请输入员工信息(E)或部门信息(D)'); RETURN; END IF; FETCH refcur INTO pid, p_name; --提取行 WHILE refcur%FOUND LOOP DBMS_OUTPUT.PUT_LINE('#' || pid || ':' || p_name); FETCH refcur INTO pid, p_name; END LOOP; CLOSE refcur; --关闭游标END;--===================动态SQL=================--VARIABLE maxsal NUMBER; --声明变量EXECUTE :maxsal := 2500; --执行引用并给变量赋值DECLARE r_emp EMP%ROWTYPE; --声明一个行类型变量 TYPE c_type IS REF CURSOR; --声明REF游标类型 cur c_type; --声明REF游标类型的变量 p_salary NUMBER; --声明一个标量变量BEGIN p_salary := :maxsal; --引用变量 --使用USING语句将引用到的值传给动态SQL语句'SAL >: 1'中的'1' OPEN cur FOR 'SELECT * FROM EMP WHERE SAL >: 1 ORDER BY SAL DESC' USING p_salary; DBMS_OUTPUT.PUT_LINE('薪水大于' || p_salary || '的员工有:'); LOOP FETCH cur INTO r_emp; EXIT WHEN cur%NOTFOUND; DBMS_OUTPUT.PUT_LINE('编号:' || r_emp.empno || '姓名:' || r_emp.ename || '薪水:' || r_emp.sal); END LOOP; CLOSE cur; --关闭游标END; 存储过程create or replace procedure PROC_INSETFORCE is r_ft cm_ct_force_test%ROWTYPE; --声明一个行类型变量 contentid number; c_temp number; CURSOR forcttest_cur IS SELECT * FROM cm_ct_force_test t;begin OPEN forcttest_cur; --打开游标 LOOP --死循环 --FOR i IN 1..12 LOOP FETCH forcttest_cur INTO r_ft; --提取游标值赋给上面声明的变量 EXIT WHEN forcttest_cur%NOTFOUND; --如果游标里没有数据则退出循环 SELECT seq_cm_contentid.NEXTVAL INTO contentid FROM DUAL; --DBMS_OUTPUT.PUT_LINE('seq:'||contentid); select count(*) into c_temp from biz_user_infor_verify t where t.verify_key=r_ft.jszh and t.type='7' and t.zoneid='379'; if c_temp<1 then insert into biz_user_infor_verify(VERIFY_KEY,TYPE,ZONEID)values(r_ft.jszh,'7','379'); end if; --DBMS_OUTPUT.PUT_LINE('count:'||c_temp); insert into cm_content values (contentid,'force','7','00000','7月份强制违法','7月份强制违法',0,'0006',sysdate,sysdate,sysdate); insert into cm_ct_force values (contentid,'379',r_ft.dabh,r_ft.jszh,r_ft.fzjg,to_date(r_ft.wfsj,'yyyy-MM-dd HH24:mi:ss'),r_ft.wfdz,r_ft.wfxw1,r_ft.cljg,r_ft.cjbj); --DBMS_OUTPUT.PUT_LINE(r_ft.zoneid || '' || r_ft.dabh); --输出查询 if mod(forcttest_cur%rowcount,100)=0 then commit; DBMS_OUTPUT.PUT_LINE(forcttest_cur%rowcount); end if; --if forcttest_cur%rowcount>610 then --DBMS_OUTPUT.PUT_LINE(forcttest_cur%rowcount); --end if; END LOOP; commit; CLOSE forcttest_cur; --关闭游标end PROC_INSETFORCE;Set serveroutput on /*使dbms_output.put_line可以显示在屏幕上 常用函数介绍: 返回查询结果中相同的部分 exp:各个部门中有哪些相同的工种 select job from account intersect select job from research intersect select job from sales; minus运算 返回在第一个查询结果中与第二个查询结果不相同的那部分行记录。 有哪些工种在财会部中有,而在销售部中没有? exp:select job from account minus select job from sales;
相关文章推荐
- 网络工程师应掌握的50个路由器知识要点
- 网络工程师应掌握的50个路由器知识要点
- 网络工程师应掌握的50个路由器知识要点
- 网络工程师应掌握的50个路由器知识要点
- 网络工程师应掌握的50个路由器知识要点
- 网络工程师应掌握的50个路由器知识要点
- 网络工程师应掌握的50个路由器知识要点
- 网络工程师应掌握的50个路由器知识要点
- 网络工程师应掌握的50个路由器知识要点
- 网络工程师应掌握的50个路由器知识要点
- 网络工程师应掌握的50个路由器知识要点
- 网络工程师应掌握的50个路由器知识要点
- 网络工程师应掌握的50个路由器知识要点
- 网络工程师应该掌握的50个路由器知识要点
- 网络工程师应掌握的50个路由器知识要点
- 网络工程师应掌握的50个路由器知识要点
- 网络工程师应掌握的50个路由器知识要点
- 网络工程师应掌握的50个路由器知识要点
- 网络工程师应掌握的50个路由器知识要点
- 网络工程师应掌握的50个路由器知识要点