2012-03-14 14 views
1

引用符付きの識別子を使用して数千ものストアドプロシージャが作成されたスキーマがあります。私はそれらを修正する必要があります。私が現在それらを識別する唯一の方法は、一度に1つずつSQLDeveloperで開き、先頭のCREATE OR REPLACE...ビットにプロシージャ名の引用符があるかどうかを確認することです。これらの面倒なものをより簡単に特定するための狡猾な方法はありますか?おそらくthis_uses_quoted_identifiersフラグを持つOracleシステムのビューを見落としたのでしょうか?私を教えてください!Oracleでは、引用符付きの識別子で作成されたデータベースオブジェクトを判別できますか?

答えて

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番目のものは、名前の中に大文字の小文字のプロシージャしかないので、二重引用符が使用されていることになります。

+0

素晴らしい、ありがとう! – ninesided

1

私が知っている限り、あなたが識別子を引用するが、すべての文字が大文字の形であるならば、それは引用符で囲まれていない識別子と同じです。 ALL_OBJECTSから選択して、大文字ではない名前を持つオブジェクト名を確認できます。

+2

これは完全ではありませんが、オブジェクト名の最初の文字をインスタンスにする場合は、二重引用符を使用する必要があります。 – Ben

関連する問題