CREATE OR REPLACE TYPE XX_LONG_DATA_REC_TYPE AS OBJECT(OBJECT_NAME VARCHAR2(240), LONG_DATA_TEXT CLOB);
/
CREATE OR REPLACE TYPE XX_LONG_DATA_TBL AS TABLE OF XX_LONG_DATA_REC_TYPE
/
CREATE OR REPLACE FUNCTION XX_SEARCH_STRING( P_SEARCH_STRING VARCHAR2 )
RETURN XX_LONG_DATA_TBL
PIPELINED
IS
XX_LONG_DATA_REC XX_LONG_DATA_REC_TYPE;
BEGIN
FOR Z IN ( SELECT VIEW_NAME, TEXT
FROM DBA_VIEWS
WHERE ROWNUM <=10 )
LOOP
IF ( UPPER(Z.TEXT) LIKE UPPER(P_SEARCH_STRING) )
THEN
XX_LONG_DATA_REC := XX_LONG_DATA_REC_TYPE( Z.VIEW_NAME, Z.TEXT );
PIPE ROW ( XX_LONG_DATA_REC );
END IF;
END LOOP;
END;
/
Script to test the same
select * from table(xx_search_string('%SELECT%'));
Another way without creating any DB object
/
CREATE OR REPLACE TYPE XX_LONG_DATA_TBL AS TABLE OF XX_LONG_DATA_REC_TYPE
/
CREATE OR REPLACE FUNCTION XX_SEARCH_STRING( P_SEARCH_STRING VARCHAR2 )
RETURN XX_LONG_DATA_TBL
PIPELINED
IS
XX_LONG_DATA_REC XX_LONG_DATA_REC_TYPE;
BEGIN
FOR Z IN ( SELECT VIEW_NAME, TEXT
FROM DBA_VIEWS
WHERE ROWNUM <=10 )
LOOP
IF ( UPPER(Z.TEXT) LIKE UPPER(P_SEARCH_STRING) )
THEN
XX_LONG_DATA_REC := XX_LONG_DATA_REC_TYPE( Z.VIEW_NAME, Z.TEXT );
PIPE ROW ( XX_LONG_DATA_REC );
END IF;
END LOOP;
END;
/
Script to test the same
select * from table(xx_search_string('%SELECT%'));
Another way without creating any DB object
DECLARE
L_CLOB_STRING
CLOB;
L_LONG_STRING
LONG;
L_OBJECT_NAME
VARCHAR2( 240 );
BEGIN
SELECT VIEW_NAME,
TEXT
INTO
L_OBJECT_NAME, L_LONG_STRING
FROM
DBA_VIEWS
WHERE ROWNUM
= 1;
L_CLOB_STRING
:= L_LONG_STRING;
IF UPPER(
L_CLOB_STRING ) LIKE '%SELECT%'
THEN
DBMS_OUTPUT.PUT_LINE( 'OBJECT NAME : ' || L_OBJECT_NAME );
ELSE
DBMS_OUTPUT.PUT_LINE( 'SELECT SEARCH STRING NOT FOUND IN THE OBJECT NAME
: ' || L_OBJECT_NAME );
END IF;
END;
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.