oracle 小项目实战总结
2016-03-10 17:05
633 查看
说明:钓鱼君昨天在网上找到一份oracle项目实战的文档,粗略看了一下大致内容,感觉自己很多知识不够扎实,便跟着文档敲了一遍,目前除了机械性代码没有实现外,主要涉及知识:创建表空间、创建用户、给用户赋权、创建表、给表添加主键及外键约束、给表及字段添加注释、创建函数、创建过程、创建序列、创建触发器、创建程序包等,现将知识整理如下:
1.创建表空间
3.给用户赋权
4.创建表
5.给表添加主键及外键约束
6.给表及字段添加注释
8.创建序列
包:
巩固基础、方能应对复杂开发。
文档地址 百度文库,点击打开。
如有问题,欢迎赐教。
1.创建表空间
--创建表空间 CREATE TABLESPACE fund DATAFILE 'e:\ORADATA\fundd_file.dbf' SIZE 40M;2.创建用户
--创建用户及密码 CREATE USER test_user IDENTIFIED BY test123456 DEFAULT TABLESPACE fund;
3.给用户赋权
--授权 GRANT CONNECT,RESOURCE TO test_user;
4.创建表
--创建表 CREATE TABLE Fund( FundNo VARCHAR2(20), CompanyId VARCHAR2(20), FundName VARCHAR2(20), Price NUMBER(10,2), FundType NUMBER(1,0), Invest NUMBER(1,0), BuyLimit NUMBER(5,0), IsChange NUMBER(1,0), YearRate NUMBER(6,5), ApplyDate DATE, State NUMBER(1,0) );
5.给表添加主键及外键约束
--删除已有的主键 --ALTER TABLE Fund DROP CONSTRAINT PK_Fund; --添加主键约束 ALTER TABLE Fund ADD CONSTRAINT PK_Fund_FundNo PRIMARY KEY(FundNo); --添加外键约束 ALTER TABLE Fund ADD CONSTRAINT FK_Fund_CompanyId FOREIGN KEY(CompanyId) REFERENCES FundCompany(CompanyId);
6.给表及字段添加注释
--给表添加注释 COMMENT ON TABLE Fund IS '基金表'; --给表字段添加注释 COMMENT ON COLUMN Fund.FundNo IS '基金代码ID,主键'; COMMENT ON COLUMN Fund.CompanyId IS '基金公司ID,外键引用FundCompany表的CompanyId'; COMMENT ON COLUMN Fund.FundName IS '基金名称'; COMMENT ON COLUMN Fund.Price IS '基金净值'; COMMENT ON COLUMN Fund.FundType IS '基金类型,1表示开放式,2表示封闭式'; COMMENT ON COLUMN Fund.Invest IS '投资方向,1股票,2债券,3货币,4混合'; COMMENT ON COLUMN Fund.BuyLimit IS '购买下限'; COMMENT ON COLUMN Fund.IsChange IS '是否可转换,0表示不可转换,1表示可转换'; COMMENT ON COLUMN Fund.YearRate IS '年利率,必须是0-1之间的数字'; COMMENT ON COLUMN Fund.ApplyDate IS '申请日期'; COMMENT ON COLUMN Fund.State IS '基金状态,0表示正常,1表示冻结';7.创建函数
CREATE OR REPLACE FUNCTION FUNC_NEXTID(I_SQ IN VARCHAR2, I_TITLE IN VARCHAR2, I_LEN IN NUMBER) RETURN VARCHAR2 AS V_SQ VARCHAR2(100); V_KEY VARCHAR2(100); BEGIN SELECT I_SQ || '.NEXTVAL' INTO V_SQ FROM DUAL; SELECT I_TITLE || LPAD(V_SQ, I_LEN, 0) INTO V_KEY FROM DUAL; RETURN V_KEY; END;
8.创建序列
--为基金公司表(FundCompany)主键创建序列 CREATE SEQUENCE SQ_COMPANYID INCREMENT BY 1 --每次加1 START WITH 1 --从1开始 NOMAXVALUE --没有最大值 NOCYCLE --一直累加不循环 CACHE 10;9.创建触发器
CREATE OR REPLACE TRIGGER TR_Fund BEFORE INSERT ON Fund FOR EACH ROW BEGIN :NEW.FUNDNO := FUNC_NEXTID('V', 'SQ_FundNo.NEXTVAL', 6); END;10.创建程序包(包体中包括了函数及过程)
包:
/*------------------------------------------------ --创建包说明 --包名:FundAccountManager_pack --功能描述:创建过程或函数分别实现,基金账户开户、基金账户信息查询。 --原创:钓鱼君 --日期:2016/3/10 --QQ:954739353 -- ------------------------------------------------*/ CREATE OR REPLACE PACKAGE FundAccountManager_pack IS --活期账户开户 FUNCTION FUNC_ADD_CURRENTACCOUNT(I_CURRENTPASSWORD VARCHAR2, I_DEPOSITSUM NUMBER, I_CARDTYPE NUMBER, I_CARDNO VARCHAR2, I_NAME VARCHAR2, I_ADDRESS VARCHAR2, I_PHONE VARCHAR2, I_SEX NUMBER, I_OPENACCDATE DATE, I_STATE NUMBER) RETURN NUMBER; --理财账户开户 FUNCTION FUNC_ADD_FINANCINGACCOUNT(I_FINANCEPASSWORD VARCHAR2, I_MONEYTYPE NUMBER, I_ACCOUNTBALANCE NUMBER, I_ENABLEBALANCE NUMBER, I_CONGEALFUND NUMBER, I_STATE NUMBER, I_CURRENTACCOUNT VARCHAR2) RETURN NUMBER; --基金账户开户 FUNCTION FUNC_ADD_FUNDACCOUNT(I_FINANCINGACCOUNT VARCHAR2, I_COMPANYID VARCHAR2, I_CARDTYPE NUMBER, I_CARDNO VARCHAR2, I_NAME VARCHAR2, I_SEX NUMBER, I_ADDRESS VARCHAR2, I_PHONE VARCHAR2, I_POSTNUM VARCHAR2, I_EMAIL VARCHAR2, I_CREATEDATE DATE, I_CONGEALSTATE NUMBER) RETURN NUMBER; --基金账户信息查询 PROCEDURE PRO_QUERY_FUNDACCOUNT(O_RESULT OUT SYS_REFCURSOR, I_FINANCINGACCOUNT IN VARCHAR2); END FundAccountManager_pack;包体:
CREATE OR REPLACE PACKAGE BODY FundAccountManager_pack IS ----活期账户开户 /*------------------------------------------------ --创建包说明 --包名:FundAccountManager_pack --功能描述:创建过程或函数分别实现,基金账户开户、基金账户信息查询。 --原创:钓鱼君 --日期:2016/3/10 --QQ:954739353 -- ------------------------------------------------*/ FUNCTION FUNC_ADD_CURRENTACCOUNT(I_CURRENTPASSWORD VARCHAR2, I_DEPOSITSUM NUMBER, I_CARDTYPE NUMBER, I_CARDNO VARCHAR2, I_NAME VARCHAR2, I_ADDRESS VARCHAR2, I_PHONE VARCHAR2, I_SEX NUMBER, I_OPENACCDATE DATE, I_STATE NUMBER) RETURN NUMBER IS ERR_CURRENTACCOUNT EXCEPTION; PRAGMA EXCEPTION_INIT(ERR_CURRENTACCOUNT, -1); /*违反唯一主键约束为-1*/ BEGIN INSERT INTO CURRENTACCOUNT (CURRENTPASSWORD, DEPOSITSUM, CARDTYPE, CARDNO, NAME, ADDRESS, PHONE, SEX, OPENACCDATE, STATE) VALUES (I_CURRENTPASSWORD, I_DEPOSITSUM, I_CARDTYPE, I_CARDNO, I_NAME, I_ADDRESS, I_PHONE, I_SEX, I_OPENACCDATE, I_STATE); IF SQL%FOUND THEN RETURN 1; END IF; EXCEPTION WHEN ERR_CURRENTACCOUNT THEN RETURN 0; WHEN OTHERS THEN RETURN - 1; END FUNC_ADD_CURRENTACCOUNT; --理财账户开户 FUNCTION FUNC_ADD_FINANCINGACCOUNT(I_FINANCEPASSWORD VARCHAR2, I_MONEYTYPE NUMBER, I_ACCOUNTBALANCE NUMBER, I_ENABLEBALANCE NUMBER, I_CONGEALFUND NUMBER, I_STATE NUMBER, I_CURRENTACCOUNT VARCHAR2) RETURN NUMBER IS ERR_FINANCINGACCOUNT EXCEPTION; PRAGMA EXCEPTION_INIT(ERR_FINANCINGACCOUNT, -1); BEGIN INSERT INTO FINANCINGACCOUNT (FINANCEPASSWORD, MONEYTYPE, ACCOUNTBALANCE, ENABLEBALANCE, CONGEALFUND, STATE, CURRENTACCOUNT) VALUES (I_FINANCEPASSWORD, I_MONEYTYPE, I_ACCOUNTBALANCE, I_ENABLEBALANCE, I_CONGEALFUND, I_STATE, I_CURRENTACCOUNT); IF SQL%FOUND THEN RETURN 1; END IF; EXCEPTION WHEN ERR_FINANCINGACCOUNT THEN RETURN 0; WHEN OTHERS THEN RETURN - 1; END FUNC_ADD_FINANCINGACCOUNT; --基金账户开户 FUNCTION FUNC_ADD_FUNDACCOUNT(I_FINANCINGACCOUNT VARCHAR2, I_COMPANYID VARCHAR2, I_CARDTYPE NUMBER, I_CARDNO VARCHAR2, I_NAME VARCHAR2, I_SEX NUMBER, I_ADDRESS VARCHAR2, I_PHONE VARCHAR2, I_POSTNUM VARCHAR2, I_EMAIL VARCHAR2, I_CREATEDATE DATE, I_CONGEALSTATE NUMBER) RETURN NUMBER IS ERR_FUNDACCOUNT EXCEPTION; PRAGMA EXCEPTION_INIT(ERR_FUNDACCOUNT, -1); V_COUNT NUMBER; BEGIN --约束条件检查 SELECT COUNT(FINANCINGACCOUNT) INTO V_COUNT FROM FUNDACCOUNT WHERE FINANCINGACCOUNT = I_FINANCINGACCOUNT AND COMPANYID = I_COMPANYID; IF V_COUNT = 0 THEN INSERT INTO FUNDACCOUNT (FINANCINGACCOUNT, COMPANYID, CARDTYPE, CARDNO, NAME, SEX, ADDRESS, PHONE, POSTNUM, EMAIL, CREATEDATE, CONGEALSTATE) VALUES (I_FINANCINGACCOUNT, I_COMPANYID, I_CARDTYPE, I_CARDNO, I_NAME, I_SEX, I_ADDRESS, I_PHONE, I_POSTNUM, I_EMAIL, I_CREATEDATE, I_CONGEALSTATE); IF SQL%FOUND THEN RETURN 1; END IF; ELSE RETURN - 1; END IF; EXCEPTION WHEN ERR_FUNDACCOUNT THEN RETURN 0; WHEN OTHERS THEN RETURN - 1; END FUNC_ADD_FUNDACCOUNT; --基金账户的查询 PROCEDURE PRO_QUERY_FUNDACCOUNT(O_RESULT OUT SYS_REFCURSOR, I_FINANCINGACCOUNT IN VARCHAR2) AS BEGIN OPEN O_RESULT FOR SELECT * FROM FUNDACCOUNT T WHERE T.FINANCINGACCOUNT = I_FINANCINGACCOUNT; END PRO_QUERY_FUNDACCOUNT; END FundAccountManager_pack;
巩固基础、方能应对复杂开发。
文档地址 百度文库,点击打开。
如有问题,欢迎赐教。
相关文章推荐
- Oracle 查看表空间大小及使用情况SQL语句
- oracle数据类型和对应的java类型
- oracle锁
- Oracle用户的新增、修改、删除及授权
- Oracle ORA-01157: 无法标识/锁定数据文件
- 彻底卸载oracle
- Oracle中函数/过程返回结果集的几种方式
- oracle中 procedure和function 区别
- oracle 同义词
- oracle 工具语句
- 安装oracle数据库字符集编码
- oracle sql工具语句积累
- oracle中的数据库、用户、方案、表空间、表对象之间的关系 .
- ORACLE CHAR,VARCHAR,VARCHAR2,NVARCHAR类型的区别与使用
- Oracle--分区表(范围分区、Hash分区、等)
- ORACLE SQL Loader
- ORACLE中用rownum分页并排序的SQL语句
- aix下设置自动启动、关闭oracle
- java.lang.NocalssDefFoundError:oracle.jdbc.driver.T4CpreparedStatement
- java 程序调用Oracle Function