クエリは次のとおりです。
SELECT * FROM CAMPAIGN WHERE 1481125 IN
(select column_name from all_tab_columns where table_name = 'CAMPAIGN' AND data_type='NUMBER')
それを分解すると、次のようになります。
SELECT * FROM CAMPAIGN WHERE 1481125 IN (<a set of numbers>)
およびサブクエリ:
select column_name from all_tab_columns
where table_name = 'CAMPAIGN'
AND data_type='NUMBER'
そのサブクエリは、列名のリストを返します。
CAMPAIGN_COUNT
CAMPAIGN_ID
CAMPAIGN_NUMBER_OF_SOMETHINGS
したがって、クエリは次と同等です。
SELECT * FROM CAMPAIGN WHERE 1481125 IN
('CAMPAIGN_COUNT', 'CAMPAIGN_ID', 'CAMPAIGN_NUMBER_OF_SOMETHINGS')
ORA-01722 エラーが発生する理由がわかりますか?
目的を達成するには、動的 SQL を作成する必要があります。