@@ -774,32 +774,37 @@ protected void prepareFixedStatement(String sql) throws SQLException {
774774 RowDescriptor rowDescriptor = fbStatement .getParameterDescriptor ();
775775 assert rowDescriptor != null : "RowDescriptor should not be null after prepare" ;
776776
777- int fieldCount = rowDescriptor .getCount ();
778777 fieldValues = rowDescriptor .createDefaultFieldValues ();
779- fields = new FBField [ fieldCount ] ;
778+ fields = createFields ( rowDescriptor . getCount ()) ;
780779
781- for ( int i = 0 ; i < fieldCount ; i ++) {
782- final int fieldPosition = i ;
780+ this . isExecuteProcedureStatement = fbStatement . getType () == StatementType . STORED_PROCEDURE ;
781+ }
783782
784- FieldDataProvider dataProvider = new FieldDataProvider () {
785- public byte [] getFieldData () {
786- return fieldValues .getFieldData (fieldPosition );
787- }
783+ private FBField [] createFields (final int fieldCount ) throws SQLException {
784+ FBField [] fields = new FBField [fieldCount ];
785+ for (int fieldPosition = 0 ; fieldPosition < fieldCount ; fieldPosition ++) {
786+ fields [fieldPosition ] = createField (fieldPosition );
787+ }
788+ return fields ;
789+ }
788790
789- public void setFieldData (byte [] data ) {
790- fieldValues .setFieldData (fieldPosition , data );
791- }
792- };
791+ private FBField createField (final int fieldPosition ) throws SQLException {
792+ FieldDataProvider dataProvider = new FieldDataProvider () {
793+ public byte [] getFieldData () {
794+ return fieldValues .getFieldData (fieldPosition );
795+ }
793796
794- // FIXME check if we can safely pass cached here
795- FBField field = FBField .createField (getParameterDescriptor (i + 1 ), dataProvider , gdsHelper , false );
796- if (field instanceof BlobListenableField ) {
797- ((BlobListenableField ) field ).setBlobListener (blobListener );
797+ public void setFieldData (byte [] data ) {
798+ fieldValues .setFieldData (fieldPosition , data );
798799 }
799- fields [i ] = field ;
800- }
800+ };
801801
802- this .isExecuteProcedureStatement = fbStatement .getType () == StatementType .STORED_PROCEDURE ;
802+ // TODO check if we can safely pass cached here
803+ FBField field = FBField .createField (getParameterDescriptor (fieldPosition + 1 ), dataProvider , gdsHelper , false );
804+ if (field instanceof BlobListenableField ) {
805+ ((BlobListenableField ) field ).setBlobListener (blobListener );
806+ }
807+ return field ;
803808 }
804809
805810 @ Override
0 commit comments