ORACLE中如何批量重置序列

背景:

數據庫所有序列都重置為1了,所以要將所有的序列都更新為對應的表主鍵(這里是id)的最大值+1。我這里序列的規則是SEQ_表名。


BEGINENHANCED_SYNC_SEQUENCES('WJ_CPP'); -- 替換為你的模式名
END;
/
CREATE OR REPLACE PROCEDURE ENHANCED_SYNC_SEQUENCES(p_schema_name IN VARCHAR2) ISv_table_name VARCHAR2(30);v_seq_name VARCHAR2(30);v_max_id NUMBER;v_new_seq_value NUMBER;v_current_seq_value NUMBER;v_increment_by NUMBER;v_table_exists NUMBER;v_step VARCHAR2(100); -- 記錄當前執行步驟,便于排查CURSOR c_sequences ISSELECT sequence_nameFROM all_sequencesWHERE sequence_owner = UPPER(p_schema_name)AND sequence_name LIKE 'SEQ\_%' ESCAPE '\';
BEGINDBMS_OUTPUT.PUT_LINE('=== 開始處理模式: ' || UPPER(p_schema_name) || ' ===');FOR seq_rec IN c_sequences LOOPv_seq_name := seq_rec.sequence_name;DBMS_OUTPUT.PUT_LINE(CHR(10) || '--- 處理序列: ' || v_seq_name || ' ---');-- 步驟1: 提取表名v_step := '提取表名';v_table_name := SUBSTR(v_seq_name, 5);DBMS_OUTPUT.PUT_LINE('步驟[' || v_step || ']: 對應表名 -> ' || v_table_name);-- 步驟2: 檢查表是否存在v_step := '檢查表是否存在';SELECT COUNT(*) INTO v_table_existsFROM all_tablesWHERE owner = UPPER(p_schema_name)AND table_name = UPPER(v_table_name);IF v_table_exists = 0 THENDBMS_OUTPUT.PUT_LINE('步驟[' || v_step || ']: 警告 - 表不存在,跳過');CONTINUE;END IF;DBMS_OUTPUT.PUT_LINE('步驟[' || v_step || ']: 表存在');-- 步驟3: 檢查ID列是否存在v_step := '檢查ID列是否存在';DECLAREv_id_exists NUMBER;BEGINSELECT COUNT(*) INTO v_id_existsFROM all_tab_columnsWHERE owner = UPPER(p_schema_name)AND table_name = UPPER(v_table_name)AND column_name = 'ID';IF v_id_exists = 0 THENDBMS_OUTPUT.PUT_LINE('步驟[' || v_step || ']: 警告 - 無ID列,跳過');CONTINUE;END IF;END;DBMS_OUTPUT.PUT_LINE('步驟[' || v_step || ']: ID列存在');-- 步驟4: 查詢表最大IDv_step := '查詢表最大ID';BEGINEXECUTE IMMEDIATE 'SELECT NVL(MAX(ID), 0) FROM ' || p_schema_name || '.' || v_table_nameINTO v_max_id;v_new_seq_value := v_max_id + 1;DBMS_OUTPUT.PUT_LINE('步驟[' || v_step || ']: 表最大ID=' || v_max_id || ', 目標序列值=' || v_new_seq_value);EXCEPTIONWHEN OTHERS THENDBMS_OUTPUT.PUT_LINE('步驟[' || v_step || ']: 錯誤 - ' || SQLERRM);CONTINUE;END;-- 步驟5: 獲取序列當前值v_step := '獲取序列當前值';BEGINEXECUTE IMMEDIATE 'SELECT ' || p_schema_name || '.' || v_seq_name || '.NEXTVAL FROM DUAL'INTO v_current_seq_value;DBMS_OUTPUT.PUT_LINE('步驟[' || v_step || ']: 序列當前值=' || v_current_seq_value);EXCEPTIONWHEN OTHERS THENDBMS_OUTPUT.PUT_LINE('步驟[' || v_step || ']: 錯誤 - ' || SQLERRM);CONTINUE;END;-- 步驟6: 判斷是否需要調整v_step := '判斷是否需要調整';IF v_current_seq_value >= v_new_seq_value THENDBMS_OUTPUT.PUT_LINE('步驟[' || v_step || ']: 無需調整(當前值 >= 目標值)');CONTINUE;END IF;DBMS_OUTPUT.PUT_LINE('步驟[' || v_step || ']: 需要調整(當前值 < 目標值)');-- 步驟7: 調整序列v_step := '調整序列';BEGIN-- 計算增量v_increment_by := v_new_seq_value - v_current_seq_value;DBMS_OUTPUT.PUT_LINE('步驟[' || v_step || ']: 臨時增量=' || v_increment_by);-- 修改增量EXECUTE IMMEDIATE 'ALTER SEQUENCE ' || p_schema_name || '.' || v_seq_name || ' INCREMENT BY ' || v_increment_by;-- 觸發增量EXECUTE IMMEDIATE 'SELECT ' || p_schema_name || '.' || v_seq_name || '.NEXTVAL FROM DUAL' INTO v_current_seq_value;DBMS_OUTPUT.PUT_LINE('步驟[' || v_step || ']: 調整后的值=' || v_current_seq_value);-- 恢復增量EXECUTE IMMEDIATE 'ALTER SEQUENCE ' || p_schema_name || '.' || v_seq_name || ' INCREMENT BY 1';DBMS_OUTPUT.PUT_LINE('步驟[' || v_step || ']: 恢復增量為1,處理成功');EXCEPTIONWHEN OTHERS THENDBMS_OUTPUT.PUT_LINE('步驟[' || v_step || ']: 錯誤 - ' || SQLERRM);-- 嘗試恢復增量BEGINEXECUTE IMMEDIATE 'ALTER SEQUENCE ' || p_schema_name || '.' || v_seq_name || ' INCREMENT BY 1';EXCEPTIONWHEN OTHERS THENDBMS_OUTPUT.PUT_LINE('步驟[' || v_step || ']: 恢復增量失敗 - ' || SQLERRM);END;CONTINUE;END;END LOOP;DBMS_OUTPUT.PUT_LINE(CHR(10) || '=== 所有序列處理完畢 ===');
END ENHANCED_SYNC_SEQUENCES;
/

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/96328.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/96328.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/96328.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

公號文章排版教程:圖文雙排、添加圖片超鏈接、往期推薦、推文采集(2025-08-21)

文章目錄 排版的基本原則 I 圖片超鏈接 方式1: 利用公號原生編輯器 方式2:在CSDN平臺使用markdown編輯器, 利用標簽實現圖片鏈接。 II 排版小技巧 自定義頁面模版教程 使用壹伴進行文章素材的采集 美編助手的往期推薦還不錯 利用365編輯器創建圖文雙排效果 排版的基本原則 親…

計算兩幅圖像在特定交點位置的置信度評分。置信度評分反映了該位置特征匹配的可靠性,通常用于圖像處理任務(如特征匹配、立體視覺等)

這段代碼定義了一個名為compute_confidence的函數&#xff0c;用于計算兩幅圖像在特定交點位置的置信度評分。置信度評分反映了該位置特征匹配的可靠性&#xff0c;通常用于圖像處理任務&#xff08;如特征匹配、立體視覺等&#xff09;。以下是逐部分解析&#xff1a; 3. 結果…

計算機視覺第一課opencv(三)保姆級教學

簡介 計算機視覺第一課opencv&#xff08;一&#xff09;保姆級教學 計算機視覺第一課opencv&#xff08;二&#xff09;保姆級教學 今天繼續學習opencv。 一、 圖像形態學 什么是形態學&#xff1a;圖像形態學是一種處理圖像形狀特征的圖像處理技術&#xff0c;主要用于描…

24.早期目標檢測

早期目標檢測 第一步&#xff0c;計算機圖形學做初步大量候選框&#xff0c;把物體圈出來 第二步&#xff0c;依次將所有的候選框圖片&#xff0c;輸入到分類模型進行判斷 選擇性搜索 選擇搜索算法&#xff08;Selective Search&#xff09;&#xff0c;是一種熟知的計算機圖像…

Java基礎知識點匯總(三)

一、面向對象的特征有哪些方面 Java中面向對象的特征主要包括以下四個核心方面&#xff1a;封裝&#xff08;Encapsulation&#xff09; 封裝是指將對象的屬性&#xff08;數據&#xff09;和方法&#xff08;操作&#xff09;捆綁在一起&#xff0c;隱藏對象的內部實現細節&am…

GEO優化專家孟慶濤:讓AI“聰明”選擇,為企業“精準”生長

在生成式AI席卷全球的今天&#xff0c;企業最常遇到的困惑或許是&#xff1a;“為什么我的AI生成內容總像‘模板套娃’&#xff1f;”“用戶明明想要A&#xff0c;AI卻拼命輸出B&#xff1f;”當生成式AI從“能用”邁向“好用”的關鍵階段&#xff0c;如何讓AI真正理解用戶需求…

【交易系統系列04】交易所版《速度與激情》:如何為狂飆的BTC交易引擎上演“空中加油”?

交易所版《速度與激情》&#xff1a;如何為狂飆的BTC交易引擎上演“空中加油”&#xff1f; 想象一下這個場景&#xff1a;你正端著一杯熱氣騰騰的咖啡&#xff0c;看著窗外我家那只貪睡的橘貓趴在陽光下打著呼嚕。突然&#xff0c;手機上的警報開始尖叫&#xff0c;交易系統監…

windows下jdk環境切換為jdk17后,臨時需要jdk1.8的處理

近段時間&#xff0c;終于決定把開發環境全面轉向jdk17&#xff0c;這不就遇到了問題。 windows主環境已經設置為jdk17了。 修改的JAVA_HOME D:\java\jdk-17CLASSPATH設置 .;D:\java\jdk-17\lib\dt.jar;D:\java\jdk-17\lib\tools.jar;PATH中增加 D:\java\jdk-17\bin但是有些程序…

Android URC 介紹及源碼案例參考

1. URC 含義 URC 是 Unsolicited Result Code(非請求結果碼)的縮寫。 它是 modem(基帶)在不需要 AP 主動請求的情況下向上層主動上報的消息。 典型例子:短信到達提示、網絡狀態變更、來電通知、信號質量變化等。 URC 一般以 AT 命令擴展的形式從 modem 發到 AP,例如串口…

VB.NET發送郵件給OUTLOOK.COM的用戶,用OUTLOOK.COM郵箱賬號登錄給別人發郵件

在VB.NET中通過代碼發送郵件時&#xff0c;確實會遇到郵箱服務的身份認證&#xff08;Authentication&#xff09;要求。特別是微軟Outlook/Hotmail等服務&#xff0c;已經逐步禁用傳統的“基本身份驗證”&#xff08;Basic Authentication&#xff09;&#xff0c;轉而強制要求…

【網絡運維】Shell:變量進階知識

Shell 變量進階知識 Shell 中的特殊變量 位置參數變量 Shell 腳本中常用的位置參數變量如下&#xff1a; $0&#xff1a;獲取當前執行的 Shell 腳本文件名&#xff08;包含路徑時包括路徑&#xff09;$n&#xff1a;獲取第 n 個參數值&#xff08;n>9 時需使用 ${n}&#xf…

部署Qwen2.5-VL-7B-Instruct-GPTQ-Int3

模型下載 from modelscope import snapshot_download model_dir snapshot_download(ChineseAlpacaGroup/Qwen2.5-VL-7B-Instruct-GPTQ-Int3)相關包導入 import os import numpy as np import pandas as pd from tqdm import tqdm from datetime import datetime,timedelta fro…

sourcetree 拉取代碼

提示&#xff1a;文章旨在于教授大家 sourcetree 拉取代碼的方式&#xff0c;關于代碼的提交合并等操作后續會補充。 文章目錄前言一、sourcetree 安裝二、http 與 ssh 拉取代碼1.http 方式&#xff08;1&#xff09;生成 token&#xff08;2&#xff09;拼接項目的 url&#x…

epoll模型網絡編程知識要領

1、程序初始化創建監聽socket調用bind函數綁定ip地址、port端口號調用listen函數監聽調用epoll_create函數創建epollfd調用epoll_ctrl函數將listenfd綁定到epollfd上&#xff0c;監測listenfd的讀事件在一個無限循環中&#xff0c;調用epoll_wait函數等待事件發生2、處理客戶端…

15-day12LLM結構變化、位置編碼和投機采樣

多頭機制transformer結構歸一化層選擇 歸一化層位置歸一化層類型激活函數Llama2結構MoE架構 混合專家模型DeepSeek MLA為何需要位置編碼目前的主流位置編碼正余弦位置編碼可學習位置編碼ROPE旋轉位置編碼推導參考&#xff1a; https://spaces.ac.cn/archives/8265 https://zhua…

記錄 docker容器打包成鏡像 在其他服務器快速啟動鏡像和容器

我有個nginx服務器 需要在其他服務器直接部署使用 里面都是完整的 使用 docker ps 查看容器id 進行打包成鏡像docker commit [容器ID或名稱] 新鏡像名:版本 docker commit 28f60e2206b2 my-nginx-custom:v1鏡像保存成文件 docker save -o my-nginx-custom.tar my-nginx-custom:…

使用LLaMA-Factory對大模型進行微調-詳解

書接上回 啟動llama Factory可視化頁面 llamafactory-cli webui 如果想后臺運行 使用 nohup llamafactory-cli webui &瀏覽器訪問 http://127.0.0.1:7860/配置項主要參數: 參考: https://docs.coreshub.cn/console/compute_platform/help/llama_factory/ 模型路徑 : 解…

【AI】錄制自動生成UI自動化腳本

命令行輸入&#xff1a;npx playwright codegen https://myerp.dmyc.XXX.com:9443/打開的瀏覽器上操作&#xff0c;會自動錄制&#xff0c;并生成自動化腳本

深度剖析字節跳動VeOmni框架

背景與設計動機 隨著推薦系統和AI模型走向多模態、多任務的趨勢&#xff0c;字節跳動面臨著訓練、迭代效率和系統復雜度的雙重挑戰。一方面&#xff0c;各類業務&#xff08;如新聞推薦、短視頻、圖文廣告、電商帶貨等&#xff09;都需要處理文本、圖像、視頻、音頻等多種輸入模…

OCR庫pytesseract安裝保姆級教程

本文將介紹使用工具安裝OCR庫pytesseract的詳細流程。 Anaconda安裝教程參考Anaconda安裝保姆級教程。 目錄 一、工具安裝 二、創建虛擬環境 三、安裝pytesseract 總結 一、工具安裝 點擊鏈接前往官網codetou.com&#xff0c;下載安裝最新版即可&#xff0c;本篇博客以摳頭…