Ik heb een vreemd probleem, ik heb de volgende stored procedure:
Wanneer ik deze in de SQL console uitvoer gaat het gewoon goed, en krijg ik een resultaat als:
@lat @lon
52,3771191146461 4,7997303146746
Echter in code krijg ik alleen het cijfer voor de komma....
Dit is mijn code:
Volgens de MS documentatie dien je DbType.Double te gebruiken, dus dit lijkt me correct.
Het vreemde is dat het resultaat niet een Float is, maar Int32, en als ik die afdruk is het resultaat: 4
Dus niet het deel achter de komma, iemand een idee wat ik fout doe?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| CREATE PROCEDURE [dbo].[GetGeoLocation] -- Add the parameters for the stored procedure here @street varchar(255), @number int, @lat float=0 output, @lon float=0 output AS BEGIN SET NOCOUNT ON; SELECT top 1 @lat = lat,@lon = lon FROM [postcodes].[dbo].[REF_Postcode_NL] where street like @street and @number <= maxnumber and @number >= minnumber and ((2 % 2 = 1 and numbertype = 'odd') or (2 % 2 = 0 and numbertype = 'even') or numbertype = 'mixed') and city_id in (1024,1025,3569) END |
Wanneer ik deze in de SQL console uitvoer gaat het gewoon goed, en krijg ik een resultaat als:
@lat @lon
52,3771191146461 4,7997303146746
Echter in code krijg ik alleen het cijfer voor de komma....
Dit is mijn code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| public static void RunStoredProcParams() { string sConn = "Server=(local);DataBase=Postcodes;Integrated Security=SSPI"; using (SqlConnection conn = new SqlConnection(sConn)) { conn.Open(); using (SqlCommand cmd = new SqlCommand("GetGeoLocation", conn)) { cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@street", "Goeman Borgesiusstraat"); // input parameter cmd.Parameters.AddWithValue("@number", 2); // input parameter // output parameter SqlParameter lat = new SqlParameter("@lat", DbType.Double); lat.Direction = System.Data.ParameterDirection.Output; cmd.Parameters.Add(lat); // output parameter SqlParameter lon = new SqlParameter("@lon", DbType.Double); lon.Direction = System.Data.ParameterDirection.Output; cmd.Parameters.Add(lon); cmd.ExecuteNonQuery(); Console.WriteLine(lon.Value); } } } |
Volgens de MS documentatie dien je DbType.Double te gebruiken, dus dit lijkt me correct.
Het vreemde is dat het resultaat niet een Float is, maar Int32, en als ik die afdruk is het resultaat: 4
Dus niet het deel achter de komma, iemand een idee wat ik fout doe?