meta data for this page
  •  

ibec_psql_Format

This functions performs code formatting of an PSQL statement.

Syntax

ibec_psql_Format(PSQLObject : variant; FormatOptions : string) : string;
  • PSQLObject - PSQL object created with ibec_psql_Parse function
  • FormatOptions - string with set of formatting options. It can be loaded from an ini-file (Options | Code formatting options | Save formatting options to file).

ibec_psql_Format returns string value containing formatted PSQL code.

Example

The following example retrieves all procedure DDL's from a database, formats them and saves formatted code in separate files:

execute ibeblock
as
begin
 sFormatOptions = '';

 -- Try to get format options from the IBExpert User Database
 userdb = ibec_GetUserDBConnection();
 if (userdb is not null) then
 begin
   ibec_UseConnection(userdb);
   select data from config where ident = 'CodeFormatOptions' into :sFormatOptions;
 end

 db = ibec_GetDefaultConnection();
 ibec_UseConnection(db);

 -- Directory to save formatted sources of procedures
 sDir = 'D:\Temp\Procs';
 ibec_ForceDirectories(sDir);

 for select rdb$procedure_name
     from RDB$PROCEDURES
     -- Comment the next line if your server doesn't support packages
     where rdb$package_name is null
     order by 1
     into :ProcName
  do
  begin
    ProcName = ibec_Trim(:ProcName);
  
    -- Pass an empty string as an option string to get pure single CREATE statement without SET TERM etc.
    sPSQL = ibec_GetObjectScript(db, :ProcName, __dboProcedure, '');
  
    -- Just for example we will replace CREATE PROCEDURE with CREATE OR ALTER PROCEDURE
    sPSQL = ibec_Trim(sPSQL);
    sPSQL = ibec_preg_Replace('^(?i)CREATE[\x01-\x20]+PROCEDURE', 'CREATE OR ALTER PROCEDURE', sPSQL);
  
    ObjPSQL = ibec_psql_Parse(sPSQL, 3, __svFB30);
    try
      sPSQLSource = ibec_psql_Format(ObjPSQL, sFormatOptions);
      sFileName = sDir || '\' || ProcName || '.sp';
      ibec_SaveToFile(sFileName, sPSQLSource, __stfOverwrite);
    finally
      ibec_psql_Free(ObjPSQL);
    end
  end;
end;