Advertisement
Guest User

Untitled

a guest
Nov 20th, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 1.14 KB | None | 0 0
  1. /*
  2. CREATE OR REPLACE TYPE newType AS ROW(cnt integer)
  3.  */
  4.  
  5. CREATE OR REPLACE PROCEDURE invalid_char()
  6.     RETURNS INTEGER
  7.     LANGUAGE NZPLSQL
  8. AS BEGIN_PROC
  9.    
  10. DECLARE
  11.     vSQL    VARCHAR(200);
  12.     vSQL2   VARCHAR(200);
  13.     vSQL3   VARCHAR(200);
  14.     vSchemaName VARCHAR(50);
  15.     rec1    SYSCAT.TABLES%ROWTYPE;
  16.     rec2    SYSCAT.COLUMNS%ROWTYPE;
  17.     rec3    RECORD AS IOLAP_TRAINING.NEWTYPE;
  18.     vCnt    INTEGER;
  19.     vInvalidChar    VARCHAR(20);
  20.  
  21. BEGIN
  22.     vSchemaName := 'IOLAP_TRAINING';
  23.     vInvalidChar := '?';
  24.     vSQL := 'SELECT * FROM SYSCAT.TABLES WHERE TABSCHEMA = ''' || vSchemaName || '''';
  25.     FOR rec1 IN EXECUTE vSQL
  26.     LOOP
  27.         vSQL2 := 'SELECT * FROM SYSCAT.COLUMNS WHERE TABNAME = ''' || rec1.TABNAME || ''' AND TABSCHEMA = ''' || vSchemaName || '''ORDER BY COLNO';    
  28.         FOR rec2 IN EXECUTE vSQL2
  29.         LOOP
  30.             vSQL3 := 'SELECT COUNT(*) FROM ' || vSchemaName || '.' || rec1.TABNAME || ' WHERE ' || rec2.COLNAME || ' LIKE ''%' || vInvalidChar || '%''';
  31.             FOR rec3 IN EXECUTE vSQL3
  32.             LOOP
  33.                 vCnt := rec3.cnt;
  34.             END LOOP;
  35.             IF vCnt > 0 THEN
  36.                 RAISE NOTICE 'Invalid column: % % %', vSchemaName, rec1.TABNAME, rec2.COLNAME;
  37.             END IF;
  38.         END LOOP;
  39.     END LOOP;
  40.    
  41.     RETURN 0;  
  42. END;
  43. END_PROC
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement