Skip to Main Content

Japanese

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

replace関数について

user11975627Dec 13 2012 — edited Dec 14 2012
皆様こんにちは。
困っていることがあるのですが、助けていただけますでしょうか。

断片化を確認するために、以下のSQLを作成しました。
OWNERとOBJECT_NAMEを標準入力するようにしています。

======================================================================
SELECT A.OWNER,A.OBJECT_TYPE,A.OBJECT_NAME,B.PARTITION_NAME,B.FILE_ID, B.BLOCK_ID, B.BLOCKS
FROM DBA_OBJECTS A, DBA_EXTENTS B
WHERE A.OWNER = B.OWNER AND
A.OBJECT_NAME = B.SEGMENT_NAME AND
NVL(A.SUBOBJECT_NAME,' ') = NVL(B.PARTITION_NAME,' ') AND
A.OBJECT_TYPE = B.SEGMENT_TYPE AND
A.OWNER = '&OWN' AND
A.OBJECT_NAME in (&OBJNM)
ORDER BY 1,2,3,4,5,6;
======================================================================


「&OBJNM」には複数オブジェクトが入るので、指定する際には、「'TEST1','TEST2'」など、カンマとシングルクォーテーションも
記載する必要があります。
ただ、面倒だなと思い、「TEST1 TEST2」のように、オブジェクト名+スペース+オブジェクト名のような記載方法に変更したいと思いました。
そして、以下のSQLを作成したのですが、実行してみると、「o rows selected」と返ってきます。(オブジェクトは存在しています。)

======================================================================
SELECT A.OWNER,A.OBJECT_TYPE,A.OBJECT_NAME,B.PARTITION_NAME,B.FILE_ID, B.BLOCK_ID, B.BLOCKS
FROM DBA_OBJECTS A, DBA_EXTENTS B
WHERE A.OWNER = B.OWNER AND
A.OBJECT_NAME = B.SEGMENT_NAME AND
NVL(A.SUBOBJECT_NAME,' ') = NVL(B.PARTITION_NAME,' ') AND
A.OBJECT_TYPE = B.SEGMENT_TYPE AND
A.OWNER = '&OWN' AND
A.OBJECT_NAME in (replace('&OBJNM',' ',''','''))
ORDER BY 1,2,3,4,5,6;
======================================================================

オブジェクトを1つのみ記載し実行すると正常に返ってくるのですが(実際には変換が実行されていない)、2つ以上記載すると返ってきません。
ただ、SELECTなどで確認すると、スペースは「','」にきちんと変換されていることが確認できます。
念の為、
owner in (''''||replace('TEST TEST001',' ',''',''')||'''')
なども試してみたのですが、ダメでした。

すみませんが、ご存知の方がいらっしゃいましたら、原因と対策を教えていただけますでしょうか。
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jan 11 2013
Added on Dec 13 2012
4 comments
3,874 views