Advertisement
SoWesley

Recreate Views Procedure

Oct 28th, 2013
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 1.29 KB | None | 0 0
  1. CREATE OR ALTER PROCEDURE PRO_RECRIA_VIEWS
  2. AS
  3. DECLARE VARIABLE NOME VARCHAR(1000);
  4. DECLARE VARIABLE TEXTO BLOB SUB_TYPE 1 SEGMENT SIZE 600;
  5. DECLARE VARIABLE FIELD VARCHAR(100);
  6. DECLARE VARIABLE FULL_SQL BLOB SUB_TYPE 1 SEGMENT SIZE 600;
  7. DECLARE VARIABLE CREATE_STATEMENT VARCHAR(10000);
  8. DECLARE VARIABLE FIELDS_STATEMENT VARCHAR(10000);
  9. BEGIN
  10.   FOR SELECT TRIM(R.RDB$RELATION_NAME), R.RDB$VIEW_SOURCE
  11.         FROM RDB$RELATIONS R
  12.         WHERE R.RDB$VIEW_SOURCE IS NOT NULL
  13.         ORDER BY R.RDB$RELATION_NAME INTO :NOME, :TEXTO DO
  14.   BEGIN
  15.     CREATE_STATEMENT = 'CREATE OR ALTER VIEW '||:NOME||'('||ASCII_CHAR(10);
  16.     FIELDS_STATEMENT = '';
  17.     FIELD            = '';
  18.     FULL_SQL         = '';
  19.  
  20.     FOR SELECT TRIM(F.RDB$FIELD_NAME)
  21.           FROM RDB$RELATION_FIELDS F
  22.           WHERE F.RDB$RELATION_NAME = :NOME
  23.           ORDER BY F.RDB$FIELD_POSITION INTO :FIELD DO
  24.     BEGIN
  25.       IF (FIELDS_STATEMENT = '') THEN
  26.       BEGIN
  27.         FIELDS_STATEMENT = '  '||:FIELD;
  28.       END
  29.       ELSE
  30.       BEGIN
  31.         FIELDS_STATEMENT = :FIELDS_STATEMENT||','||ASCII_CHAR(10)||'  '||:FIELD;
  32.       END
  33.     END
  34.  
  35.     FIELDS_STATEMENT = :FIELDS_STATEMENT||')'||ASCII_CHAR(10)||'AS';
  36.  
  37.     FULL_SQL = :CREATE_STATEMENT||:FIELDS_STATEMENT||:TEXTO;
  38.  
  39.     EXECUTE STATEMENT FULL_SQL;
  40.   END
  41. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement