儲存過程中使用dblink,碰到dblink死鎖解決方案
CREATE OR REPLACE PROCEDURE synchronous_pm_t_material AS PRAGMA AUTONOMOUS_TRANSACTION; ---開啟自動事務機制,此處的分號別忘了
last_version VARCHAR2(14);
current_version VARCHAR2(14);
CURSOR sync_row_cursor(p_last_version varchar2,p_current_version varchar2)
IS
SELECT OBJID,OBJVERSION,PART_NO AS MATERIAL_NO,DESCRIPTION AS MATERIAL_NAME,REQUISITION_NO,LINE_NO,STATE AS PROCESS_TYPE,1 AS AREA,
REQUESTED_QTY AS AMOUNT,BUY_UNIT_MEAS AS UNIT,TYPE_DESIGNATION AS SPEC,DIM_QUALITY AS IMAGE_NO,ACCOUNTING_GROUP AS ACCOUNT,
REQUISITIONER_ORG AS ORG,CONTACT,BUYER_CODE,DEL_DES_CODE,NOTE_TEXT AS NOTES,VENDOR_NO
FROM GZB_EPMS_material WHERE OBJVERSION > p_last_version AND OBJVERSION <= p_current_version
UNION
SELECT OBJID,OBJVERSION,PART_NO AS MATERIAL_NO,DESCRIPTION AS MATERIAL_NAME,REQUISITION_NO,LINE_NO,STATE AS PROCESS_TYPE,2 AS AREA,
REQUESTED_QTY AS AMOUNT,BUY_UNIT_MEAS AS UNIT,TYPE_DESIGNATION AS SPEC,DIM_QUALITY AS IMAGE_NO,ACCOUNTING_GROUP AS ACCOUNT,
REQUISITIONER_ORG AS ORG,CONTACT,BUYER_CODE,DEL_DES_CODE,NOTE_TEXT AS NOTES,VENDOR_NO
FROM TG_EPMS_material WHERE OBJVERSION > p_last_version AND OBJVERSION <= p_current_version;
BEGIN
SELECT last_SYNCHRONOUS_TIME INTO last_version FROM (SELECT (to_char(SYNCHRONOUS_TIME,'yyyymmddhhmiss')) AS last_SYNCHRONOUS_TIME FROM PM_T_SYNC_TIME ORDER BY SYNCHRONOUS_TIME DESC) WHERE ROWNUM <= 1;
SELECT to_char(SYSDATE,'yyyymmddhhmiss') INTO current_version FROM dual;
FOR sync_row IN sync_row_cursor(last_version,current_version)
LOOP
IF (fun_material_haved(sync_row.objid)=0) THEN
INSERT INTO pm_t_material(MATERIAL_ID,material_no,material_name,requisition_no,line_no,process_type,area,amount,unit,spec,account,org,contact
,buyer_code,del_des_code,notes,vendor_no,image_no,objid,objversion,create_type,create_date,update_date) VALUES (
seq_pm_t_material.nextval,sync_row.material_no,sync_row.material_name,sync_row.requisition_no,sync_row.line_no,coverToProcessType(sync_row.process_type),
sync_row.area,sync_row.amount,sync_row.unit,sync_row.spec,sync_row.account,sync_row.org,sync_row.contact,coverToBuyerCode(sync_row.buyer_code),sync_row.del_des_code,
sync_row.notes,sync_row.vendor_no,sync_row.image_no,sync_row.objid,sync_row.objversion,1,to_date(current_version,'yyyy-mm-dd hh:mi:ss'),to_date(current_version,'yyyy-mm-dd hh:mi:ss'));
ELSE
UPDATE pm_t_material SET material_no= sync_row.material_no,material_name=sync_row.material_name,requisition_no=sync_row.requisition_no,
line_no=sync_row.line_no,process_type=coverToProcessType(sync_row.process_type),area=sync_row.area,amount=sync_row.amount,unit=sync_row.unit,spec=sync_row.spec,
account=sync_row.account,org=sync_row.org,contact=sync_row.contact,buyer_code=coverToBuyerCode(sync_row.buyer_code),del_des_code=sync_row.del_des_code,
notes=sync_row.notes,vendor_no=sync_row.vendor_no,image_no=sync_row.image_no,objversion=sync_row.objversion,update_date=to_date(current_version,'yyyy-mm-dd hh:mi:ss')
WHERE objid = sync_row.objid;
END IF;
END LOOP;
INSERT INTO PM_T_SYNC_TIME(SYNCHRONOUS_TIME) VALUES(to_date(current_version,'yyyy-mm-dd hh:mi:ss'));
COMMIT; --提交別忘了,要不然執行完成就自動回滾了
相關推薦
儲存過程中使用dblink,碰到dblink死鎖解決方案
CREATE OR REPLACE PROCEDURE synchronous_pm_t_material AS PRAGMA AUTONOMOUS_TRANSACTION; ---開啟自動事務機制,此處的分號別忘了 last_version VARCHAR2(14)
weblogic使用過程中的部分報錯與解決方案
fuse hang not 切換 failure tin pre 編輯 get 報錯一: vim中 E212:無法打開並寫入文件 編寫配置文件時,常常忘記切換到root用戶,導致文件編輯完畢,敲入:wq 退出保存時,出現 E212:無法打開並寫入文件 的錯誤提示。這是由於在
sql server死鎖解決方案
問題場景:在客戶那碰到一個操作卡死的現象 問題解決: 1、如何掛鉤是死鎖問題:通過程式碼跟蹤,發現是指執行一個SQL語句超時,因此猜想可能是表鎖住了 2、如果確認是思索問題:通過SQL發現死鎖,以下是相關的SQL select request_session_id
(十六)java併發程式設計--執行緒的死鎖解決方案(生產者和消費者幾種實現方式)
上一篇中,主要了解了什麼時候死鎖,並且提出死鎖的一個解決方案,多個鎖要按照一定的順序來。 本片主要是利用生產者消費者模式解決執行緒的死鎖。 多執行緒生產者和消費者一個典型的多執行緒程式。一個生產者生產提供消費的東西,但是生產速度和消費速度是不同的。這就需要讓
Git配置過程中出現的問題,以及解決方案
提示出錯資訊:fatal: remote origin already exists. 解決辦法如下: 1、先輸入$ git remote rm origin
ionic android 編譯打包過程中遇到的一些問題及解決方案
操作環境 ionic framework 3.9.2、 cordova (Cordova CLI) 8.1.2、ionic (Io
oracle ora-02020 儲存過程中dblink使用個數問題
今天晚上加班,有個儲存過程,裡面已經有4個dblink了,但是由於業務需要,還需要再加幾個,在加到第五個的時候,系統忽然丟擲一個錯誤:ora-02020 too many database links in use。諮詢oracle工程師,得出的結論是在oracle的系統引數
async、await在ASP.NET[ MVC]中之線程死鎖的故事
div pos ask 其他 flow ron ttpClient com async 場景重構 public ActionResult Index(string ucode) { string userInfo = G
SQL儲存過程中分頁
</pre><pre name="code" class="sql">ALTER proc [dbo].[GetGoodsLsit] ----分頁條件 @StartIndex varchar(20), @PageSize varchar(20), ----排序條件
虛擬機器(VMware)安裝ubuntu18過程中總是被卡死或者不能輸入name,password解決辦法
虛擬機器(VMware)安裝ubuntu18過程中總是被卡死或者不能輸入name,password解決辦法 問題描述: 虛擬機器(VMware)安裝ubuntu 18.4過程中總是被卡死或者不能輸入name,passwo
如何在儲存過程中執行set命令 我來答
1.EXEC使用EXEC命令兩種用種執行儲存程另種執行態批處理所講都第二種用 面先使用EXEC演示例,程式碼1DECLARE @TableName VARCHAR(50),@Sql NVARCHAR (MAX),@OrderID INT;SET @TableName = 'Orders';SET @Orde
MySql儲存過程中傳參和不傳參以及java中呼叫程式碼
資料庫表結構 1.mysql不傳參寫儲存過程 create procedure product() -- product為儲存過程名稱 begin select * from book; end 呼叫此儲存過程為 CALL product
【轉載】postgresql儲存過程中返回型別
前言 假如需要在pg上面寫儲存過程,那麼返回型別必定是一個疑問點。 一般而言,對於一個查詢語句,為了可以統一動態返回各種資料,我們是不會蠢到每一個儲存過程都額外編寫一個返回型別 譬如: (id,name,password) 之類的,所以在寫的時候肯定會考慮 setof record這個動
儲存過程中一維陣列接受按分割符拆分的資料
declare -- Local variables here i integer; Lar_Input t_Arr.Arrname; --一維陣列接收 按分隔符拆分 begin -- Test statements here Pkg_n_Cst_String.Pr
sql在所有儲存過程中查詢包含某字串的執行語句
直接在查詢分析器中執行以下程式碼就行: 方法一) select name from sysobjects o, syscomments s where o.id = s.id and text like '%test%' and o.xtype = 'P' 方法二)
Oracle 儲存過程中傳送郵件,並支援使用者驗證 中文標題和內容
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
關於在專案中遇到MySQL資料庫死鎖的問題
在MySQL中, 當一個事務去更新某條資料, 還沒有提交的時候, 第二個事務去更新該資料, 則會出現等待獲取鎖超時異常: >> Lock wait timeout exceeded; try restarting transaction 此異
oracle12C資料庫JSON的應用 --PL/SQL儲存過程中JSON解析應用篇
最近有些專案在資料庫oracle中使用到json格式的資料互動,對於oracle12以上的版本都支援JSON格式資料的使用,剛剛接觸的猿們可以到上一篇oracle資料庫使用json的簡單入門,最好參考官方的API文件關於oracle官方API文件對JSON的支援; 下面就比較詳細的說一下,關
oracle儲存過程中 RETURNING INTO的含義
DECLARE Row_id ROWID; info VARCHAR2(40); BEGIN INSERT INTO dept VALUES (91, 'SERVICE', 'BEIJING') RETURNING rowid,
儲存過程中is的含義
例子: create or replace procedure proc1( para1 varchar2, para2 out varchar2, para3 in out varchar2 ) as v_name varchar2(20); /*變數宣告塊:緊跟著的as (is