execute ibeblock ( CodeDir varchar(1000) = 'D:\IBEBlocks\' comment 'Path to necessary IBEBlocks', FileStrm variant) as begin FldTypeFunc = bec_LoadFromFile(CodeDir || 'FldType.ibeblock'); if (FileStrm is not null) then FS = FileStrm; else FS = ibec_fs_OpenFile('D:\BlockScript.sql', __fmCreate); for select f.rdb$field_name, -- 0 f.rdb$validation_source, -- 1 f.rdb$computed_source, -- 2 f.rdb$default_source, -- 3 f.rdb$field_length, -- 4 f.rdb$field_scale, -- 5 f.rdb$field_type, -- 6 f.rdb$field_sub_type, -- 7 f.rdb$description, -- 8 f.rdb$segment_length, -- 9 f.rdb$dimensions, -- 10 f.rdb$null_flag, -- 11 f.rdb$character_length, -- 12 f.rdb$collation_id, -- 13 f.rdb$character_set_id, -- 14 f.rdb$field_precision, -- 15 ch.rdb$character_set_name, -- 16 co.rdb$collation_name -- 17 from rdb$fields fleft join rdb$character_sets ch on (f.rdb$character_set_id = ch.rdb$character_set_id) left join rdb$collations co on ((f.rdb$collation_id = co.rdb$collation_id) and (f.rdb$character_set_id = co.rdb$character_set_id)) where not (f.rdb$field_name starting with 'RDB$') order by rdb$field_name into :DomProps do begin DomName = DomProps[0]; execute ibeblock FldTypeFunc(DomProps[6], DomProps[7], DomProps[4], DomProps[5], DomProps[9], DomProps[12], DomProps[15], 3) returning_values :FieldType; DomType = FieldType; -- Character Set if ((DomProps[6] in (14, 37, 261)) and (DomProps[16] is not null)) then DomType = DomType || ' CHARACTER SET ' || ibec_trim(DomProps[16]) || ibec_Chr(13) || ibec_Chr (10); -- Default Value if ((DomProps[3] is not null) and (DomProps[3] <> '')) then DomType = DomType || ibec_trim(DomProps[3]) || ibec_Chr(13) || ibec_Chr(10); -- NOT NULL flag if (DomProps[11] is not null) then DomType = DomType || 'NOT NULL' || ibec_Chr(13) || ibec_Chr(10); -- Check source if ((DomProps[1] is not null) and (DomProps[1] <> '')) then DomType = DomType || ibec_trim(DomProps[1]) || ibec_Chr(13) || ibec_Chr(10); -- Collate if ((DomProps[17] is not null) and (DomProps[17] <> '')) then DomType = DomType || 'COLLATE ' || ibec_trim(DomProps[17]) || ibec_Chr(13) || ibec_Chr(10); DomType = ibec_Chr(13) || ibec_Chr(10) || ibec_Trim(DomType) || ';'; ibec_progress('Writing domain ' || DomName); ibec_fs_Writeln(FS, 'CREATE DOMAIN ' || ibec_Trim(DomProps[0]) || DomType); ibec_fs_Writeln(FS, ''); end if (FileStrm is null) then ibec_fs_CloseFile(FS); end