Oracle 更新图书价格

来源:互联网 发布:中国网络信息平台 编辑:程序博客网 时间:2024/04/28 06:38

操作环境:
Win7 64位
8G运行内存
数据库版本 11g R2
1.创建bookstore 账户

CREATE USER bookstoreIDENTIFIED BY adminDEFAULT TABLESPACE usersTEMPORARY TABLESPACE tempQUOTA 20M ON users;

这里写图片描述
2. 为bookstore角色解锁,设置创建session会话的权限,并以bookstore身份登录

ALTER USER bookstore ACCOUNT  UNLOCK;

这里写图片描述
创建session会话的权限

```

这里写图片描述

以bookstore身份登录

这里写图片描述

3.创建图书信息表book

CREATE TABLE book(    bookid NUMBER(10) primary key,    booknumber CHAR(8) UNIQUE NOT NULL,    bookname VARCHAR2(30) NOT NULL,    bookpress VARCHAR2(40) NOT NULL,    bookprice NUMBER(8,2) NOT NULL,    typeid NUMBER(10) DEFAULT 1 NOT NULL,    booktime DATE NOT NULL    );

出现问题
这里写图片描述

应该先授予权限(用system的身份才能完成这一步)

GRANT create table to bookstore; 

这里写图片描述

重新创建表
这里写图片描述

4.创建一个图书表后,插入4条数据

这里写图片描述
这里写图片描述
5.使用游标更新图书价格,价格低于15元的保持原价不变,价格超过15元的打九折,如果打折后的价格低于15元就赋值为15元

DECLARECURSOR book_cursor ISSELECT booknumber,bookname,bookpriceFROM bookFOR UPDATE OF bookprice NOWAIT;book_price NUMBER(8,2);BEGINFOR current_cursor IN book_cursorLOOPIF current_cursor.bookprice<=15 THENbook_price :=current_cursor.bookprice;ELSEbook_price :=current_cursor.bookprice*0.9;IF book_price <15 THENbook_price :=15;END IF;END IF;UPDATE book SET bookprice =book_price WHERE CURRENT OF book_cursor;END LOOP;END;

这里写图片描述
6.查询数据更新状况
这里写图片描述

Tip:
应该注意几个问题,首先在创建book表的时候的权限问题。
其次Oracle 是大小写敏感的,创建表的时候一定千万要注意大小写。

0 0
原创粉丝点击