易截截图软件、单文件、免安装、纯绿色、仅160KB
热门标签: c c# c++ asp asp.net linux php jsp java vb Python Ruby mysql sql access Sqlite sqlserver delphi javascript Oracle ajax wap mssql html css flash flex dreamweaver xml
 最新文章 :

oracle 存储过程的基本语法

1.基本结构
CREATE OR REPLACE PROCEDURE 存储过程名字
(
    参数1 IN NUMBER,
    参数2 IN NUMBER
) IS
变量1 INTEGER :=0;
变量2 DATE;
BEGIN
END 存储过程名字
2.SELECT INTO STATEMENT
  将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条
  记录,否则抛出异常(如果没有记录抛出NO_DATA_FOUND)
  例子:
  BEGIN
  SELECT col1,col2 into 变量1,变量2 from typestruct where xxx;
  EXCEPTION
  WHEN NO_DATA_FOUND THEN
      xxxx;
  END;
  ...
3.IF 判断
  IF V_TEST=1 THEN
    BEGIN
       do something
    END;
  END IF;
4.while 循环
  WHILE V_TEST=1 LOOP
  BEGIN
 XXXX
  END;
  END LOOP;
5.变量赋值
  V_TEST := 123;
6.用for in 使用cursor
  ...
  IS
  CURSOR cur IS SELECT * from xxx;
  BEGIN
 FOR cur_result in cur LOOP
&nb ......

oracle常用数据类型

oracle常用数据类型
今天同事问些数据类型的问题,有的还真有点记不清了,于是就简单总结下常用的数据类型以备日后查用
1、Char
定长格式字符串,在数据库中存储时不足位数填补空格,它的声明方式如下CHAR(L),L为字符串长度,
缺省为1,作为变量最大32767个字符,作为数据存储在ORACLE8中最大为2000。不建议使用,会带来不
必要的麻烦
a、字符串比较的时候,如果不注意(char不足位补空格)会带来错误
b、字符串比较的时候,如果用trim函数,这样该字段上的索引就失效(有时候会带来严重性能问题)
c、浪费存储空间(无法精准计算未来存储大小,只能留有足够的空间;字符串的长度就是其所占用空间的大小)
2、Varchar2/varchar
目前VARCHAR是VARCHAR2的同义词。工业标准的VARCHAR类型可以存储空字符串,但是oracle不这样做,尽管它保留
以后这样做的权利。Oracle自己开发了一个数据类型VARCHAR2,这个类型不是一个标准的VARCHAR,它将在数据库中
varchar列可以存储空字符串的特性改为存储NULL值。如果你想有向后兼容的能力,Oracle建议使用VARCHAR2而不是VARCHAR。
不定长格式字符串,它的声明方式如下VARCHAR2(L),L为字符串长度,没有缺省值,作为变量最大3 ......

Oracle 游标总结+整理

项目中需要使用到按规则生成序列号,开始的解决办法是根据条件取得最大ID号进行分解+1再合并的解决方案,后来发现如果两个客户同时操作的时候出现问题:添加的时候ID已经存在,原因是:A用户在访问取得第MAX(N)记录deID,但是还没有进行增加操作,这时,B用户也取得第MAX(N)记录deID,这是A进行添加操作同时,B也同时进行添加操作,那么B用户就会保存失败,我们开始的时候采用的解决方案是:(枷锁)在程序的方法上枷锁,采用单线程操作,实施结果:失败,客户等待时间长,后来我们采用绑定数据库的方案:编写存储过程,虽然绑定不怎么方便,但是执行效率要快很多。由于时间问题,没有做序列自动创建功能,欢迎各位大虾进行指点和评论,我们最后的方案如下:
在oracle里面编写了2个基本做基本处理的自定义函数:
create or replace function fun_config_glide_num(p_class  varchar2,
                                       & ......

BLOB转换为CLOB的函数(oracle中执行)

BLOB转换为CLOB的函数(oracle中执行)
CREATE OR REPLACE FUNCTION BlobToClob(blob_in IN BLOB) RETURN CLOB AS
  v_clob    CLOB;
  v_varchar VARCHAR2(32767);
  v_start  PLS_INTEGER := 1;
  v_buffer  PLS_INTEGER := 32767;
BEGIN
  DBMS_LOB.CREATETEMPORARY(v_clob, TRUE);
 
  FOR i IN 1 .. CEIL(DBMS_LOB.GETLENGTH(blob_in) / v_buffer) LOOP
 
    v_varchar := UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR(blob_in,
                                                          v_buffer,
                       &nb ......

Oracle Connect By用法

Oracle Connect By用法
 
oracle中的select语句可以用START WITH...CONNECT BY PRIOR子句实现递归查询,connect by 是结构化查询中用到的,其基本语法是:
select ... from <TableName>
where <Conditional-1>
start with <Conditional-2>
connect by <Conditional-3>
;
<Conditional-1>:过滤条件,用于对返回的所有记录进行过滤。
<Conditional-2>:查询结果重起始根结点的限定条件。
<Conditional-3>:连接条件
数据库表结构如下:
create table t2(
root_id number,
id number,
name varchar(5),
description varchar(10)
);
insert into t2(root_id,id,name,description) values(0,1,'a','aaa');
insert into t2(root_id,id,name,description) values(1,2,'a1','aaa1');
insert into t2(root_id,id,name,description) values(1,3,'a2','aaa2');
insert into t2(root_id,id,name,description) values(0,4,'b','bbb');
insert into t2(root_id,id,name,description) values(4,5,'b1','bbb1');
insert into t2(root_id,id,name,description) values(4,6,'b2','bbb2');
获取完整树:
select * fro ......

ORACLE带参全连接

    
  select * from (
  select cw2.NO WHOLENO,sp1.ARGUMENTNAME TYPENAME,sp2.ARGUMENTNAME BRANDNAME,sp3.ARGUMENTNAME STYLENAME,sp4.ARGUMENTNAME DEPART,so.OPERATORNAME USERNAME
  from COM_WHOLE_INFO cw2,SYS_OPERATOR so, SYS_PUBLICARGUMENT sp1, SYS_PUBLICARGUMENT sp2, SYS_PUBLICARGUMENT sp3, SYS_PUBLICARGUMENT sp4
  where cw2.C_CURDEPTNO='00020104' and cw2.C_TYPE=sp1.ARGUMENTID(+) and cw2.C_BRAND=sp2.ARGUMENTID(+)
  and cw2.C_STYLE=sp3.ARGUMENTID(+) and cw2.C_URUSER=so.OPERATORID(+) and cw2.C_CURDEPTNO=sp4.ARGUMENTID(+)) cc
  full join  (select * from COM_INVENTORY ci2 where ci2.parent='6') tab1 on tab1.no=cc.WHOLENO ......
总记录数:40319; 总页数:6720; 每页6 条; 首页 上一页 [2123] [2124] [2125] [2126] 2127 [2128] [2129] [2130] [2131] [2132]  下一页 尾页
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号