动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Oracle教程 ]的信息



本月文章推荐
.层次树添加节点、删除节点.
.用Oracle Materialized views动态.
.感受“酷”的力量.
.全文索引查询模板的使用.
.Oracle Database 10 g : 为 DBA .
.Re: 紧急求救:oracle的数据导入.
.Linux中给Python2.2加DCOracle模.
.关于Logminer.
.Install Oracle9 on RedHat.
.如何在Oracle中使用游标来实现多.
.Oracle数据库开发的一些经验积累.
.PL/SQL学习笔记(七).
.甲骨文新推Oracle运输管理软件.
.Oracle 10g安装及建库的方法步骤.
.数据库名DB_name实例名instance全.
.Reports产品简介.
.Oracle10g For RHAS3 Install(一.
.查询语句(SELECT)的优化.
.Oracle分页新招.
.ORACLE在HP-UX下的系列问题处理(.

Oracle FAQ 之SQL&PL/SQL篇

发表日期:2008-2-9 |



  [Q]怎么样查询非凡字符,如通配符%与_
  [A]select * from table where name like 'A\_%' escape '\'
  
  [Q]如何插入单引号到数据库表中
  [A]可以用ASCII码处理,其它非凡字符如&也一样,如
  insert into t values('i'chr(39)'m'); -- chr(39)代表字符'
  或者用两个单引号表示一个
  or insert into t values('I''m'); -- 两个''可以表示一个'
  
  [Q]怎样设置事务一致性
  [A]set transaction [isolation level] read committed; 默认语句级一致性
  set transaction [isolation level] serializable;
  read only; 事务级一致性
  
  [Q]怎么样利用游标更新数据
  [A]cursor c1 is
  select * from tablename
  where name is null for update [of column]
  ……
  update tablename set column = ……
  where current of c1;
  
  [Q]怎样自定义异常
  [A] pragma_exception_init(exception_name,error_number);
  假如立即抛出异常
  raise_application_error(error_number,error_msg,truefalse);
  其中number从-20000到-20999,错误信息最大2048B
  异常变量
  SQLCODE 错误代码
  SQLERRM 错误信息
  
  [Q]十进制与十六进制的转换
  [A]8i以上版本:
  to_char(100,'XX')
  to_number('4D','XX')
  8i以下的进制之间的转换参考如下脚本
  create or replace function to_base( p_dec in number, p_base in number )
  return varchar2
  is
  l_str varchar2(255) default NULL;
  l_num number default p_dec;
  l_hex varchar2(16) default '0123456789ABCDEF';
  begin
  if ( p_dec is null or p_base is null ) then
  return null;
  end if;
  if ( trunc(p_dec) <> p_dec OR p_dec < 0 ) then
  raise PROGRAM_ERROR;
  end if;
  loop
  l_str := substr( l_hex, mod(l_num,p_base)+1, 1 ) l_str;
  l_num := trunc( l_num/p_base );
  exit when ( l_num = 0 );
  end loop;
  return l_str;
  end to_base;
  /
  create or replace function to_dec
  ( p_str in varchar2,
  p_from_base in number default 16 ) return number
  is
  l_num number default 0;
  l_hex varchar2(16) default '0123456789ABCDEF';
  begin
  if ( p_str is null or p_from_base is null ) then
  return null;
  end if;
  for i in 1 .. length(p_str) loop
  l_num := l_num * p_from_base + instr(l_hex,upper(substr(p_str,i,1)))-1;
  end loop;
  return l_num;
  end to_dec;
  /
  
  [Q]能不能介绍SYS_CONTEXT的具体用法
  [A]利用以下的查询,你就明白了
  select
  SYS_CONTEXT('USERENV','TERMINAL') terminal,
  SYS_CONTEXT('USERENV','LANGUAGE') language,
  SYS_CONTEXT('USERENV','SESSIONID') sessionid,
  SYS_CONTEXT('USERENV','INSTANCE') instance,
  SYS_CONTEXT('USERENV','ENTRYID') entryid,
  SYS_CONTEXT('USERENV','ISDBA') isdba,
  SYS_CONTEXT('USERENV','NLS_TERRITORY') nls_territory,
  SYS_CONTEXT('USERENV','NLS_CURRENCY') nls_currency,
  SYS_CONTEXT('USERENV','NLS_CALENDAR') nls_calendar,
  SYS_CONTEXT('USERENV','NLS_DATE_FORMAT') nls_date_format,
  SYS_CONTEXT('USERENV','NLS_DATE_LANGUAGE') nls_date_language,
  SYS_CONTEXT('USERENV','NLS_SORT') nls_sort,
  SYS_CONTEXT('USERENV','CURRENT_USER') current_user,
  SYS_CONTEXT('USERENV','CURRENT_USERID') current_userid,
  SYS_CONTEXT('USERENV','SESSION_USER') session_user,
  SYS_CONTEXT('USERENV','SESSION_USERID') session_userid,
  SYS_CONTEXT('USERENV','PROXY_USER') proxy_user,
  SYS_CONTEXT('USERENV','PROXY_USERID') proxy_userid,
  SYS_CONTEXT('USERENV','DB_DOMAIN') db_domain,
  SYS_CONTEXT('USERENV','DB_NAME') db_name,
  SYS_CONTEXT('USERENV','HOST') host,
  SYS_CONTEXT('USERENV','OS_USER') os_user,
  SYS_CONTEXT('USERENV','EXTERNAL_NAME') external_name,
  SYS_CONTEXT('USERENV','IP_ADDRESS') ip_address,
  SYS_CONTEXT('USERENV','NETWORK_PROTOCOL') network_protocol,
  SYS_CONTEXT('USERENV','BG_JOB_ID') bg_job_id,
  SYS_CONTEXT('USERENV','FG_JOB_ID') fg_job_id,
  SYS_CONTEXT('USERENV','AUTHENTICATION_TYPE') authentication_type,
  SYS_CONTEXT('USERENV','AUTHENTICATION_DATA') authentication_data
  from dual
  
  [Q]怎么获得今天是星期几,还关于其它日期函数用法
  [A]可以用to_char来解决,如
  select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual;
  在获取之前可以设置日期语言,如
  ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';
  还可以在函数中指定
  select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;
  其它更多用法,可以参考to_char与to_date函数
  如获得完整的时间格式
  select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
  随便介绍几个其它函数的用法:
  本月的天数
  SELECT to_char(last_day(SYSDATE),'dd') days FROM dual
  今年的天数
  select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual
  下个星期一的日期
  SELECT Next_day(SYSDATE,'monday') FROM dual
  
  [Q]随机抽取前N条记录的问题
  [A]8i以上版本
  select * from (select * from tablename order by sys_guid()) where rownum < N;
  select * from (select * from tablename order by dbms_random.value) where rownum< N;
  注:dbms_random包需要手工安装,位于$Oracle_HOME/rdbms/admin/dbmsrand.sql
  dbms_random.value(100,200)可以产生100到200范围的随机数
  
  [Q]抽取从N行到M行的记录,如从20行到30行的记录
  [A]select * from (select rownum id,t.* from table where ……
  and rownum <= 30) where id > 20;
  
  [Q]怎么样抽取重复记录
  [A]select * from table t1 where where t1.rowed !=
  (select max(rowed) from table t2
  where t1.id=t2.id and t1.name=t2.name)
  或者
  select count(*), t.col_a,t.col_b from table t
  group by col_a,col_b
  having count(*)>1
  假如想删除重复记录,可以把第一个语句的select替换为delete
  
  [Q]怎么样设置自治事务
  [A]8i以上版本,不影响主事务
  pragma autonomous_transaction;
  ……
  commitrollback;
  
  [Q]怎么样在过程中暂停指定时间
  [A]DBMS_LOCK包的sleep过程
  如:dbms_lock.sleep(5);表示暂停5秒。

  
  [Q]怎么样快速计算事务的时间与日志量
  [A]可以采用类似如下的脚本
  DECLARE
  start_time NUMBER;
  end_time NUMBER;
  start_redo_size NUMBER;
  end_redo_size NUMBER;
  BEGIN
  start_time := dbms_utility.get_time;
  SELECT VALUE INTO start_redo_size FROM v$mystat m,v$statname s
  WHERE m.STATISTIC#=s.STATISTIC#
  AND s.NAME='redo size';
  --transaction start
  INSERT INTO t1
  SELECT * FROM All_Objects;
  --other dml statement
  COMMIT;
  end_time := dbms_utility.get_time;
  SELECT VALUE INTO end_redo_size FROM v$mystat m,v$statname s
  WHERE m.STATISTIC#=s.STATISTIC#
  AND s.NAME='redo size';
  dbms_output.put_line('Escape Time:'to_char(end_time-start_time)' centiseconds');
  dbms_output.put_line('Redo Size:'to_char(end_redo_size-start_redo_size)' bytes');
  END;
  
  [Q]怎样创建临时表
  [A]8i以上版本
  create global temporary tablename(column list)
  on commit preserve rows; --提交保留数据 会话临时表
  on commit delete rows; --提交删除数据 事务临时表
  临时表是相对于会话的,别的会话看不到该会话的数据。
  
  [Q]怎么样在PL/SQL中执行DDL语句
  [A]1、8i以下版本dbms_sql包
  2、8i以上版本还可以用
  execute immediate sql;
  dbms_utility.exec_ddl_statement('sql');
  
  [Q]怎么样获取IP地址
  [A]服务器(817以上):utl_inaddr.get_host_address
  客户端:sys_context('userenv','ip_address')
  
  [Q]怎么样加密存储过程
  [A]用wrap命令,如(假定你的存储过程保存为a.sql)
  wrap iname=a.sql
  PL/SQL Wrapper: Release 8.1.7.0.0 - ProdUCtion on Tue Nov 27 22:26:48 2001
上一篇:Index of Oracle 人气:431
下一篇:UNIX和WINDOWS2000上的ORACLE的差异(2) 人气:343
浏览全部Oracle教程的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-7-25 WikyBlog v1.7.0.1 多国语言版
2008-7-25 乐彼网上开店系统(56770 Eshop)
2008-7-25 赛特网站管理系统sitecms v3.6.0
2008-7-25 Modoer多功能点评系统 v1.0.1 Bu
2008-7-25 Shangducms Teamsuit! v1.1.0 开
2008-7-25 幻影动漫网视频系统(Ppdong) v1.
2008-7-25 acteecompany企业网站建设系统 v
2008-7-25 恒浪整合管理系统 ims v4.1 ACCE
2008-7-25 艺术图库系统 v1.0 beta
2008-7-19 UltraEdit 简体中文增强版 14.10
2008-7-19 CentOS 5.2 i386 LiveCD
2008-7-19 Snapture多功能相机 v1.4
2008-7-19 iAcces中文输入法 v1.0Build016
2008-7-19 Cookbook烹饪秘籍 v2.5
2008-7-19 苹果专用DVD转换工具 v1.1.59汉化
2008-7-19 Modem修复软件ZiPhone修改版04.0
2008-7-19 AgileMessenger即时通讯工具美化
2008-7-19 Sketches画图软件 v0.7b6破解版


  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号