@@ -15,26 +15,26 @@ internal sealed class CachedProcedure
15
15
public static async Task < CachedProcedure > FillAsync ( IOBehavior ioBehavior , MySqlConnection connection , string schema , string component , CancellationToken cancellationToken )
16
16
{
17
17
var parameters = new List < CachedParameter > ( ) ;
18
+ int routineCount ;
18
19
using ( var cmd = connection . CreateCommand ( ) )
19
20
{
20
21
cmd . Transaction = connection . CurrentTransaction ;
21
- cmd . CommandText = @"SELECT ORDINAL_POSITION, PARAMETER_MODE, PARAMETER_NAME, DATA_TYPE, DTD_IDENTIFIER
22
+ cmd . CommandText = @"SELECT COUNT(*)
23
+ FROM information_schema.routines
24
+ WHERE ROUTINE_SCHEMA = @schema AND ROUTINE_NAME = @component;
25
+ SELECT ORDINAL_POSITION, PARAMETER_MODE, PARAMETER_NAME, DATA_TYPE, DTD_IDENTIFIER
22
26
FROM information_schema.parameters
23
27
WHERE SPECIFIC_SCHEMA = @schema AND SPECIFIC_NAME = @component
24
28
ORDER BY ORDINAL_POSITION" ;
25
- cmd . Parameters . Add ( new MySqlParameter
26
- {
27
- ParameterName = "@schema" ,
28
- Value = schema
29
- } ) ;
30
- cmd . Parameters . Add ( new MySqlParameter
31
- {
32
- ParameterName = "@component" ,
33
- Value = component
34
- } ) ;
29
+ cmd . Parameters . AddWithValue ( "@schema" , schema ) ;
30
+ cmd . Parameters . AddWithValue ( "@component" , component ) ;
35
31
36
32
using ( var reader = ( MySqlDataReader ) await cmd . ExecuteReaderAsync ( CommandBehavior . Default , ioBehavior , cancellationToken ) . ConfigureAwait ( false ) )
37
33
{
34
+ await reader . ReadAsync ( cancellationToken ) . ConfigureAwait ( false ) ;
35
+ routineCount = reader . GetInt32 ( 0 ) ;
36
+ await reader . NextResultAsync ( cancellationToken ) . ConfigureAwait ( false ) ;
37
+
38
38
while ( await reader . ReadAsync ( cancellationToken ) . ConfigureAwait ( false ) )
39
39
{
40
40
parameters . Add ( new CachedParameter (
@@ -48,7 +48,7 @@ FROM information_schema.parameters
48
48
}
49
49
}
50
50
51
- return parameters . Count == 0 ? null : new CachedProcedure ( schema , component , parameters . AsReadOnly ( ) ) ;
51
+ return routineCount == 0 ? null : new CachedProcedure ( schema , component , parameters . AsReadOnly ( ) ) ;
52
52
}
53
53
54
54
public ReadOnlyCollection < CachedParameter > Parameters { get ; }
0 commit comments