数千のストアド プロシージャの少数が引用符で囲まれた識別子で作成されたスキーマがあります。それらを修正する必要があります。私が現在それらを識別する唯一の方法は、一度に 1 つずつ SQLDeveloper で開き、CREATE OR REPLACE...
上部のビットでプロシージャ名が引用符で囲まれているかどうかを確認することです。これらの厄介なオブジェクトをより簡単に識別する狡猾な方法はありますか? this_uses_quoted_identifiers
おそらく、フラグ付きのOracleシステムビューを見落としていませんか? 教えてください!
2 に答える
2
少なくとも 2 つの方法があります。
select * from all_source where type = 'PROCEDURE' and line = 1 and text like '%"%'
と
select * from all_procedures where procedure_name != upper(procedure_name)
ただし、いずれも 100% 正確で完全なものではありません。最初のものは、最初の行の二重引用符を探します。2 番目のものは、二重引用符が使用されていることを意味する名前に小文字のプロシージャのみを検索します。
于 2012-03-14T06:22:17.957 に答える
1
私の知る限り、識別子を引用しても、すべての文字が大文字の場合、それは引用されていない識別子とまったく同じです。したがって、ALL_OBJECTS から選択して、大文字以外の名前を持つオブジェクト名を確認できます。
于 2012-03-14T06:21:47.557 に答える