ORACLE / PLSQL 插入或更新数据的几种方式

您所在的位置:网站首页 oracle添加主键的四种方法 ORACLE / PLSQL 插入或更新数据的几种方式

ORACLE / PLSQL 插入或更新数据的几种方式

2024-07-15 06:26| 来源: 网络整理| 查看: 265

第一种,直接用values 插入

---日期需要用TO_DATE操作 INSERT INTO EMP (EMPNO,ENAME ,JOB,MGR, HIREDATE , SAL ,COMM, DEPTNO) VALUES (1122,'STEVE','工人',2233,TO_DATE('2017-01-03','YYYY-MM-DD'),3000,500,20);

第二种,用select 的方式插入

INSERT INTO EMP (EMPNO,ENAME ,JOB,MGR, HIREDATE ) SELECT EMPNO,ENAME ,JOB,MGR, HIREDATE FROM EMP WHERE DEPTNO = 20 ;

第三种,select () into () 方式插入,这种是游标中使用,存在于过程中,给游标赋值

SELECT EMPNO,ENAME ,JOB,MGR, HIREDATE FROM EMP WHERE DEPTNO = 20 INTO EMP (EMPNO,ENAME ,JOB,MGR, HIREDATE );

第四种,用merge into 更新数据(比较复杂,但很好用),这个方法不需要先 DELETE 再 进行 insert ,只对需要核对的数据进行一次操作,比先DELETE 再INSERT效率要高。

MERGE INTO ANN_FIN_PROFITDISTRIBUTE_total A --要更新数据的表 USING (SELECT B.VC_REPORT_ID VC_REPORT_ID, ---using可以理解为,用这些查出来的数据去匹配更新 SUM(B.F_PER10_DIVIDEND) F_PER10_DIVIDEND_TOTAL, SUM(B.F_DIVIDEND_CASH) F_DIVIDEND_CASH_TOTAL, SUM(B.F_DIVIDEND_INVEST) F_DIVIDEND_INVEST_TOTAL, SUM(B.F_DIVIDEND_TOTAL) F_DIVIDEND_TOTAL FROM ANN_FIN_PROFITDISTRIBUTE B WHERE B.VC_REPORT_ID = V_REPORT_ID GROUP BY B.VC_REPORT_ID) C ON (A.VC_REPORT_ID = C.VC_REPORT_ID) --- ON 是非常关键的,决定着这些数据是否被更新 WHEN MATCHED THEN  --如果 ON的条件满足,那么就更新数据,做如下的 update 处理 UPDATE SET A.F_PER10_DIVIDEND_TOTAL = C.F_PER10_DIVIDEND_TOTAL, A.F_DIVIDEND_CASH_TOTAL = C.F_DIVIDEND_CASH_TOTAL, A.F_DIVIDEND_INVEST_TOTAL = C.F_DIVIDEND_INVEST_TOTAL, A.F_DIVIDEND_TOTAL = C.F_DIVIDEND_TOTAL WHEN NOT MATCHED THEN ---如果 ON 的条件不满足,则插入这些数据 INSERT (A.VC_REPORT_ID, A.F_PER10_DIVIDEND_TOTAL, A.F_DIVIDEND_CASH_TOTAL, A.F_DIVIDEND_INVEST_TOTAL, A.F_DIVIDEND_TOTAL) VALUES (C.VC_REPORT_ID, C.F_PER10_DIVIDEND_TOTAL, C.F_DIVIDEND_CASH_TOTAL, C.F_DIVIDEND_INVEST_TOTAL, C.F_DIVIDEND_TOTAL);

 

第五种,用update更新,这里就不用emp表了,懒得码字

UPDATE ANN_HLD_OTHER_ACCEST --表名 SET (VC_REPORT_ID, --报表唯一标示 F_DEPOSIT_GUARAN, --存出保证金 F_SQUARE_MONEY, --应收证券清算款 F_VIVIDEND, --应收股利 F_INTEREST, --应收利息 F_SUBSCRIBE, --应收申购款 F_OTHER_ITEM --其他应收款 ) = (SELECT V_REPORT_ID, --变量 C.F_A1031, --存出保证金 C.F_B3003, --应收证券清算款 C.F_A1203, -- 应收股利 C.F_A1204, --应收利息 C.F_A1207, --应收申购款 C.F_A1221 --其他应收款 FROM fact_HLD_hlddetail_PRICE C WHERE C.VC_FUNDCODE = I_FCODE --约束条件

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3