Oracleデータベースがあり、エディタ用にPL/SQL Developerを使用しています。さまざまな手順で何千回も使用されていた古いjavascript関数があります。その関数の名前を置き換える必要があります。 PL/SQL Developer で、という単語をすべての手続きで見つけて置き換え、他のテキストエディタやIDE(Netbeans、Visual Studio、Eclipse、Android Studio)のようなすべてのことができますか?PL/SQL Developerでテキストの出現箇所を検索し、新しい語句に置き換えますか?
1
A
答えて
1
私はあなたの目的のためのコードを書こうとしました、それが助けて欲しいです!これを行うには今すぐ機能を
CREATE TABLE NEW_SOURCES
(
OLD_NAME VARCHAR2 (256 BYTE),
NEW_NAME VARCHAR2 (256 BYTE),
SOURCE CLOB,
CHANGE_DATE DATE
);
:
まずあなたが結果を格納するテーブルを必要
今CREATE OR REPLACE FUNCTION GENERATE_REFACTOR (
P_OLD_NAME IN VARCHAR2,
P_NEW_NAME IN VARCHAR2
)
RETURN NUMBER --Returns number of objects if success and -1 otherwise
IS
CURSOR CUR_OBJ (
P_NAME IN VARCHAR2)
IS
SELECT NAME, TYPE, OWNER
FROM ALL_DEPENDENCIES
WHERE REFERENCED_NAME = P_NAME
AND TYPE IN ('PACKAGE', 'PACKAGE BODY', 'FUNCTION', 'PROCEDURE')--Specify your object type here
ORDER BY 3, 2, 1;
CURSOR CUR_SRC (
P_NAME IN VARCHAR2,
P_TYPE IN VARCHAR2,
P_OWNER IN VARCHAR2
)
IS
SELECT *
FROM ALL_SOURCE
WHERE NAME = P_NAME AND TYPE = P_TYPE AND OWNER = P_OWNER
ORDER BY LINE;
V_OLD_FUNCTION_NAME VARCHAR2 (256);
V_NEW_FUNCTION_NAME VARCHAR2 (256);
C_SOURCE CLOB;
V_BUFFER VARCHAR2 (4000);
V_MODIFIED_LINE VARCHAR2 (4000);
V_COUNT NUMBER;
V_GAP VARCHAR2 (512)
:= CHR (10)
|| '---------------------'
|| CHR (10)
|| 'CREATE OR REPLACE '; -- You can add your own comment header here
PROCEDURE APPEND_TEXT (
V_CLOB IN OUT NOCOPY CLOB,
V_BUFFER IN OUT NOCOPY VARCHAR2,
V_TEXT VARCHAR2
)
--Can Append Text to CLOB in optimized way
--Useful in adding a lot of records one by one to a clob
--Notice: have to provide a big varchar2 buffer and clean it afterwards
IS
BEGIN
V_BUFFER := V_BUFFER || V_TEXT;
EXCEPTION
WHEN VALUE_ERROR
THEN
IF V_CLOB IS NULL
THEN
V_CLOB := V_BUFFER;
ELSE
DBMS_LOB.APPEND (V_CLOB, V_BUFFER);
V_BUFFER := V_TEXT;
END IF;
WHEN OTHERS
THEN
DBMS_OUTPUT.PUT_LINE ('Exc: ' || SQLERRM);
END;
BEGIN
V_OLD_FUNCTION_NAME := P_OLD_NAME;
V_NEW_FUNCTION_NAME := P_NEW_NAME;
--If you wanna gather sources all in a single clob use these two lines and if you want them each one in a single clob comment them
DBMS_LOB.CREATETEMPORARY (C_SOURCE, FALSE, 1000);
V_BUFFER := NULL;
FOR OBJ IN CUR_OBJ (V_OLD_FUNCTION_NAME)
LOOP
--If you wanna gather sources all in a single clob comment these two lines and if you want them each one in a single clob uncomment them
--DBMS_LOB.CREATETEMPORARY (C_SOURCE, FALSE, 1000);
--V_BUFFER := NULL;
V_BUFFER := V_BUFFER || V_GAP;
FOR LINE IN CUR_SRC (OBJ.NAME, OBJ.TYPE, OBJ.OWNER)
LOOP
IF LINE.TEXT LIKE '%' || V_OLD_FUNCTION_NAME || '%'
THEN
SELECT REPLACE (
LINE.TEXT,
V_OLD_FUNCTION_NAME,
V_NEW_FUNCTION_NAME
)
INTO V_MODIFIED_LINE
FROM DUAL;
APPEND_TEXT (C_SOURCE, V_BUFFER, V_MODIFIED_LINE);
ELSE
APPEND_TEXT (C_SOURCE, V_BUFFER, LINE.TEXT);
END IF;
END LOOP;
--If you wanna gather sources all in a single clob comment these two lines and if you want them each one in a single clob uncomment them
--DBMS_LOB.APPEND (C_SOURCE, V_BUFFER);
-- INSERT INTO NEW_SOURCES VALUES (OBJ.OWNER||'.'||OBJ.NAME, OBJ.TYPE, C_SOURCE, SYSDATE);
V_COUNT := V_COUNT + 1;
END LOOP;
--If you wanna gather sources all in a single clob use these two lines and if you want them each one in a single clob comment them
DBMS_LOB.APPEND (C_SOURCE, V_BUFFER);
INSERT INTO NEW_SOURCES VALUES (V_OLD_FUNCTION_NAME, V_NEW_FUNCTION_NAME, C_SOURCE, SYSDATE);
RETURN V_COUNT;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.PUT_LINE ('Exc: ' || SQLERRM);
RETURN -1;
END;
/
コミットとNEW_SOURCESテーブルを照会、変更したソースがある、することができます.sqlファイルに保存し、pl/sql開発者で実行します。
ので、その後v_gap変数宣言でそれをコメントする場合は、「CREATE OR REPLACE」節の場合には、最終的なスクリプトを実行中にエラーが発生することに注意してくださいまず
でバックアップを取ります。
幸運。
関連する問題
- 1. 検索と同じパターンの複数の出現箇所を置き換える
- 2. 1つの出現箇所を正規表現に置き換えます
- 3. 単語の最初の出現箇所のみを置換します。
- 4. 最初の出現箇所を '。'に置き換えます。 SQL文字列に
- 5. XSLTで句読点を検索して置き換えます
- 6. 置き換え-すべての出現箇所のAtomのキーボードショートカットをLinuxの
- 7. 正規表現を使用して文字列の最後の出現箇所を置き換えます。
- 8. 単語を検索してファイルからの単語で置き換えます
- 9. ウェブページ内の単語を検索して置き換えます
- 10. テキストの検索と置き換え、単語の翻訳
- 11. ラベルjqueryのテキストを検索して置き換えます
- 12. 正規表現の検索と置き換えが置換えの検索用語
- 13. 文字列の2番目の出現箇所のみを置換します。
- 14. MySQLデータベースのテキストの単語を検索して置き換える方法は?
- 15. テキストを検索フィルタの画像に置き換えます。
- 16. JSONオブジェクトの要素のテキストを検索して置き換えますか?
- 17. 行の正規表現パターンのすべての出現箇所を検索
- 18. VBA Excelで範囲内の単語を検索して置き換えます
- 19. txtファイルのテキストをWindowsのバッチファイルで検索して置き換えます
- 20. 列内の文字列を検索し、別のテキストに置き換えます。
- 21. Eclipseはエディタウィンドウを新しい検索選択に置き換えます
- 22. ReplaceAllは部分文字列の最初の出現箇所を置き換えます
- 23. 正規表現を使用して単語を検索し、htmlタグで置き換えます。
- 24. "完全な単語のみ"オプションで検索して置き換えます
- 25. テーブルを検索した後に値を検索して置き換えます。
- 26. 検索バーの透かしテキストを置き換えてください。
- 27. 複数のファイルの次の単語を検索して置き換えます
- 28. Jqueryを使用しているdivテキストのすべての出現箇所を見つけて置き換えます
- 29. 新しい行を含むテキストの検索と置換
- 30. ajax呼び出しを検索して置き換えますか?
どこに置き換えますか?ストアドプロシージャとパッケージのPL/SQLソースコードですか? – Codo
はい、ストアド・プロシージャおよびパッケージのPL/SQLソース・コードです。 – mismanc
このような出現をすべて検索できます: 'SELECT * FROM ALL_SOURCE WHERE TEXT LIKE '%function_name%''。 – Codo