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 ......
数据类型
参数
描述
char(n)
n=1 to 2000字节
定长字符串,n字节长,如果不指定长度,缺省为1个字节长(一个汉字为2字节)
varchar2(n)
n=1 to 4000字节
可变长的字符串,具体定义时指明最大长度n,
这种数据类型可以放数字、字母以及ASCII码字符集(或者EBCDIC等数据库系统接受的字符集标准)中的所有符号。
如果数据长度没有达到最大值n,Oracle 8i会根据数据大小自动调节字段长度,
如果你的数据前后有空格,Oracle 8i会自动将其删去。VARCHAR2是最常用的数据类型。
可做索引的最大长度3209。
number(m,n)
m=1 to 38
n=-84 to 127
可变长的数值列,允许0、正值及负值,m是所有有效数字的位数,n是小数点以后的位数。
如:number(5,2),则这个字段的最大值是99,999,如果数值超出了位数限制就会被截取多余的位数。
如:number(5,2),但在一行数据中的这个字段输入575.316,则真正保存到字段中的数值是575.32。
如:number(3,0),输入575.316,真正保存的数据是575。
date
无
从公元前4712年1月1日到公元4712年12月31日的所有合法日期,
Oracle 8i其实在内部是按7个字节来保存日期数据,在定义中还包括小时、分、秒。
缺省格式为DD-MON-YY,如07-11 ......
今天在百度上搜索了下oracle写的触发器,感觉还可以。
就收藏咯。
用户表:创建触发器之前首先要创建序列
用户表序列:
create sequence users_seq;
用户表触发器:
create or replace trigger bifer_users_userid_pk
before insert
on users
for each row
begin
select users_seq.nextval into:new.userid from dual;
end;
/
商品表:
商品表序列:create sequence product_seq;
商品表触发器:
create or replace trigger bifer_product_itemid_pk
before insert
on product
for each row
begin
select product_seq.nextval into:new.itemid from dual;
end;
/
商品品牌表:
商品品牌表序列:create sequence brand_seq;
商品品牌表触发器:
create or replace trigger bifer_brand_brandid_pk
before insert
on brand
for each row
begin
select brand_seq.nextval into:new.brandid from dual;
end;
/
商品类别表:
商品表序列:create sequence class_seq;
商品表触发器:
create or replace trigger bifer_class_classid_pk
before insert
on class
for each row
begin
select class_seq.nextval into:new.classid from du ......
常用的数据库字段类型如下:
字段类型 中文说明 限制条件 其它说明
CHAR 固定长度字符串 最大长度2000 bytes
VARCHAR2 可变长度的字符串 最大长度4000 bytes 可做索引的最大长度749
NCHAR 根据字符集而定的固定长度字符串 最大长度2000 bytes
NVARCHAR2 根据字符集而定的可变长度字符串 最大长度4000 bytes
DATE 日期(日-月-年) DD-MM-YY(HH-MI-SS) 经过严格测试,无千虫问题
LONG 超长字符串 最大长度2G(231-1) 足够存储大部头著作
RAW 固定长度的二进制数据 最大长度2000 bytes 可存放多媒体图象声音等
LONG RAW 可变长度的二进制数据 最大长度2G 同上
BLOB 二进制数据 最大长度4G
CLOB 字符数据 最大长度4G
NCLOB 根据字符集而定的字符数据 最大长度4G
BFILE 存放在数据库外的二进制数据 最大长度4G
ROWID 数据表中记录的唯一行号 10 bytes ********.****.****格式,*为0或1
NROWID 二进制数据表中记录的唯一行号 最大长度4000 bytes
NUMBER(P,S) 数字类型 P为整数位,S为小数位
DECIMAL(P,S) 数字类型 P为整数位,S为小数位
INTEGER 整数类型 小的整数
FLOAT 浮点数类型 NUMBER(38),双精度
REAL 实数类型 NUMBER(63),精度更高
数据类 ......
查询某列值为null的记录:
select *
from tablename
where col is null;
查询某列值不为null的记录:
select *
from tablename
where col is not null;
针对null的+-*/=!=等操作都是null:
null表示不确定的值,两个null表示两个不确定的值、未知的值,因此不存在两个null的相等,同样也不能有两个null之间的算术、逻辑操作。 ......
配置多个SDE服务(oracle) 项目要准备两份相同结构的数据给不同的用户,由于数据量很大,不断的备份还原效率十分低下,因此考虑新建一个数据库,建立两个SDE服务。
1.新建数据库DXGX_GX(原数据库:DXGX)
2.运行SDE POST 新创建一个服务(在创建之前需要先关闭已在运行中的SDE服务)
3.在ArcCatalog里建立新的SDE连接DXGXGX(以前的叫DXGX)。
问题出现了,两个SDE服务DXGXGX和DXGX的内容完全一样,都是连接表DXGX_GX的表空间SDE。
解决办法:
1.找到SDEHOME目录(可以在菜单-运行里输入:%SDEHOME%)
2.复制文件夹下的所有的文件到新的目录,如C:\ArcGIS\ArcSDE\ora9iexe2.
3.打开原目录中的%SDEHOME%\etc\dbinit.sde文件,修改 set ORACLE_SID=DXGXGX 为 set ORACLE_SID=DXGX 保存
4.打开注册表:HKEY_LOCAL_MACHINE\SOFTWARE\ESRI\ArcInfo\ArcSDE\ArcSDE for Oracle 打开新建的SDE服务,如esri_gxsde,修改子键SDEHOME为步骤2中新复制的目录。
5.重启两个SDE服务即可!
原因:dbinit.sde文件记录了数据库的SID,新建SDE服务时,把原来SDE服务所指向的数据库SID也更改了!
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/gisfarmer/archive/2009/04 ......