Oracle用户解锁
每当我们新安装了oracle后,第一次运行都会出现一个用户被锁的错误提示,此时需要我们手动进行用户解锁,下面以解锁scott用户为例: 首先在命令行窗口中输入 sqlplus sys/sys as sysdba 这里的sys是系统账号,oracle自带的,后面的sys是密码,这个密码在你安装时设置好的. as sysdba 意思就是以这个用户做为数据库管理员登录 再接下来的提示当中输入 alter user scott account unlock; 这样就可以将用户 scott解锁!
Oracle对用户操作语法
对用户解锁:alter user username account unlock;
解锁后可以对其密码进行修改:
alter user username identified by newPassword;
创建用户:
CREATE USER username IDENTIFIED BY password;
给用户授权:
GRANT CREATE SESSION TO username;(才可登录)
GRANT CONNENT,RESOURCE TO username;(进行创建表之类的操作)
回收用户授权:
REVOKE 权限 ON 用户表名称 from 用户; ......
1、创建存储过程
create or replace procedure test(var_name_1 in type,var_name_2 out type) as
--声明变量(变量名 变量类型)
begin
--存储过程的执行体
end test;
打印出输入的时间信息
E.g:
create or replace procedure test(workDate in Date) is
begin
dbms_output.putline('The input date is:'||to_date(workDate,'yyyy-mm-dd'));
end test;
2、变量赋值
变量名 := 值;
E.g:
create or replace procedure test(workDate in Date) is
x number(4,2);
begin
x := 1;
end test;
3、判断语句:
if 比较式 then begin end; end if;
E.g
create or replace procedure test(x in number) is
begin
if x >0 then
begin
x := 0 - x;
end;
end if;
if x = 0 then
begin
&nb ......
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 ......
Oracle确实强大,强大到设置一个自增字段都会这么麻烦 – -,从在CentOS下安装到使用真可谓困难重重,让我这只菜鸟吃了不少苦头,做个手记先,在Oracle中设置自增字段需要两个工具,一个叫Sequence(序列),另一个就是常用的Trigger(触发器)。
USERS表结构:
CREATE TABLE “USERS”
(
“USERID” NUMBER(11,0) NOT NULL ENABLE,
“USERNAME” VARCHAR2(45 BYTE) NOT NULL ENABLE,
“USERPWD” VARCHAR2(45 BYTE) NOT NULL ENABLE,
“USEREMAIL” VARCHAR2(45 BYTE) DEFAULT NULL,
CONSTRAINT “USERS_PK” PRIMARY KEY (”USERID”)
)
1. 创建一个Sequence用来设置自增规则:
CREATE SEQUENCE S_USERS_USERID NOMAXVALUE NOCYCLE
Sequence的语句说明:
INCREMENT BY 1 — 每次加几个
START WITH 1 — 从1开始计数
NOMAXVALUE — 不设置最大值
NOCYCLE — 一直累加,不循环
现在就可以使用S_USERS_USERID.CURRVAL(返回Sequence当前值)和S_USERS_USERID.NEXTVAL(返回增加后的值)了。
2. 创建一个Trigger来使用Sequence,并在USERS表Insert的时候触发:
C ......