How to query from all_views based on TEXT field [message #110743] |
Wed, 09 March 2005 23:20  |
himang
Messages: 282 Registered: March 2005 Location: Bangalore
|
Senior Member |

|
|
Hi,
I want to query from ALL_VIEWS based on the TEXT field in where clause. When I give
" select view_name from all_views where text like 'AB%';"
then it gives me error
"ERROR at line 1: ORA-00932: inconsistent datatypes "
I want to check for one condition which all views are using that condition.
Help is appreciated!!
[Updated on: Wed, 09 March 2005 23:20] Report message to a moderator
|
|
|
Re: How to query from all_views based on TEXT field [message #110779 is a reply to message #110743] |
Thu, 10 March 2005 04:54   |
 |
Maaher
Messages: 7065 Registered: December 2001
|
Senior Member |
|
|
Since INSTR works for LONGS in PL/SQL, you can create a function like this (hence doing the INSTRwork for you in PL/SQL):
CREATE OR REPLACE FUNCTION view_instr (piv_owner in varchar2, piv_vname IN varchar2, piv_searchfor in varchar2)
RETURN NUMBER
IS
v_long long;
v_return number;
BEGIN
select text
into v_long
from all_views
where owner = piv_owner
and view_name = piv_vname;
v_return := instr(v_long,piv_searchfor);
return v_return;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
return -1;
WHEN OTHERS
THEN
RAISE;
END view_instr;
/
Afterwards, you can query like this:
SELECT _whatever_
FROM all_views
WHERE view_instr(owner, view_name, '_search_string_') > 0
You can make this more generic with Dynamic SQL, but I believe that if you'd search AskTom, you find what you're looking for.
MHE
|
|
|
|
|