當前位置:首頁 » 存儲配置 » mergeinto存儲過程

mergeinto存儲過程

發布時間: 2023-05-27 01:34:08

1. oracle存儲過程 使用游標 比對臨時表和業務表兩張表 相同數據找出來 做標記 在插入臨時表中

使用merge into就可以了。

示例

MERGE INTO bonuses D
USING (SELECT employee_id, salary, department_id FROM employees
WHERE department_id = 80) S
ON (D.employee_id = S.employee_id)
WHEN MATCHED THEN UPDATE SET D.bonus = D.bonus + S.salary*.01
DELETE WHERE (S.salary > 8000)
WHEN NOT MATCHED THEN INSERT (D.employee_id, D.bonus)
VALUES (S.employee_id, S.salary*.01)
WHERE (S.salary <= 8000);

2. Oracle 存儲過程面試題

sql">提供參考
DECLARE
BEGIN
mergeINTOt17_organt1
USINGt40_organt2
ONt1.organno=t2.organno
WHENmatchedTHEN
UPDATE
SETt1.organname=t2.organname,
t1.organlevel=t2.organlevel,
t1.uporgankey=t2.uporgankey,
t1.flag=t2.flag;
COMMIT;
END;
/

3. sqlserver 存儲過程大批量數據插入

可使用Merge Into 語句完成操作。
具體用法參考文章:http://www.cnblogs.com/biwork/p/3370335.html

4. 寫一個oracle存儲過程

大致寫了下,需要藉助一個臨時表,所有的更新在臨時中進行,最後合並到正式表中,代碼如下,可以根據實際的業務邏輯改一下,供參考

--首先創建臨時表
createtableODS_TRANS_TMPas
select*fromODS_TRANSwhere1=2;

--下面為更新的存儲過程
createorreplaceprocerep_update_opp_acctis
begin
--向臨時表寫入數據
insertintoODS_TRANS_TMP--將需要更新的記錄,插入到臨時表
select*
fromODS_TRANSt
whereDR_CR_FLAG=1
andOPP_ACCT_NUMisnull
andTRANS_IDin(select1
from(selectTRANS_ID,TRANS_DT
fromODS_TRANS
whereOPP_ACCT_NUMisnull
groupbyTRANS_ID,TRANS_DT
havingcount(1)=2)a--首先找到對方賬號為空的記錄,按TRANS_ID,TRANS_DT分組,必須同時為2條
wheret.TRANS_ID=a.TRANS_ID
andt.TRANS_DT=a.TRANS_DT);

--臨時表中,更新對方賬號欄位
mergeintoODS_TRANS_TMPa
using(selectTRANS_ID,TRANS_DT,ACCT_NUM
fromODS_TRANS_TMP
whereDR_CR_FLAG=1)b
on(a.DR_CR_FLAG=0anda.TRANS_ID=b.TRANS_IDanda.TRANS_DT=b.TRANS_DT)
whenmatchedthen
updateseta.OPP_ACCT_NUM=b.ACCT_NUM;

mergeintoODS_TRANS_TMPa
using(selectTRANS_ID,TRANS_DT,ACCT_NUM
fromODS_TRANS_TMP
whereDR_CR_FLAG=0)b
on(a.DR_CR_FLAG=1anda.TRANS_ID=b.TRANS_IDanda.TRANS_DT=b.TRANS_DT)
whenmatchedthen
updateseta.OPP_ACCT_NUM=b.ACCT_NUM;

--臨時表合並到正式表
mergeintoODS_TRANSa
usingODS_TRANS_TMPb
on(a.TRANS_ID=b.TRANS_IDanda.TRANS_DT=b.TRANS_DTanda.DR_CR_FLAG=b.DR_CR_FLAG)
whenmatchedthen
updateseta.OPP_ACCT_NUM=b.OPP_ACCT_NUM;

--刪除臨時表中的數據
deletefromODS_TRANS_TMP;

commit;
exception
whenothersthen
rollback;
end;

5. 在存儲過程裡面使用mergeinto出錯了,看不出來哪裡錯了

merge into RoomType a using #RoomType b
on b.TypeName=a.TypeName
when matched then
update a --這個a不能要
set a.TypePrice=b.TypePrice
where b.TypeName=a.TypeName
when not matched then
insert into RoomType (這老燃個表好含氏名也不能友散加) values(@TypeName,@TypePrice,@IsTv,@IsKongTiao,
@Remark)

6. 存儲過程優化oracle,merge into 表全表和查詢表一部分哪個效率高

merge into主要是要將a與using的表進行一一對比,隨著a表的增大,using後的表查詢的改如渣速度在變慢,主要優化select *from a inner join b on a.id=b.id這條查詢,因為a表在不斷增大,b表的大小如何橡畢,二者的連接關系核悄是什麼,通過執行計劃可以看出。

7. Oracle使用merge into 編寫存儲過程 遇編譯錯誤:PL/SQL: ORA-00926: 缺失 VALUES 關鍵字

Oracle使用猜碼掘merge into 編寫存儲過程 遇編譯錯誤,是設置錯誤造成的,解決方法如下:

1、首先穗核新建存儲過程,Create or ReplaceProcere CHK_SYS_EMP 檢查系統工號。

熱點內容
流控腳本破解 發布:2025-02-07 08:39:09 瀏覽:413
什麼是資源為什麼要研究資源配置 發布:2025-02-07 08:25:19 瀏覽:87
釣魚網站源碼製作 發布:2025-02-07 08:23:54 瀏覽:139
mac運行fl需要什麼配置 發布:2025-02-07 08:15:45 瀏覽:573
安卓怎麼做都比不了蘋果 發布:2025-02-07 08:12:47 瀏覽:238
怎麼給物理機配置ip地址 發布:2025-02-07 08:01:37 瀏覽:139
三國志13未加密 發布:2025-02-07 07:54:37 瀏覽:926
馬斯克中國訪問 發布:2025-02-07 07:54:29 瀏覽:102
資料庫有表 發布:2025-02-07 07:50:49 瀏覽:29
基於nginx搭建圖片伺服器原理 發布:2025-02-07 07:44:18 瀏覽:449