parametrelerinde saklı tutar clr saklı yordamları öğrenmeye başladım. Tek tek saklı yordam prosedürüyle bir çalışmayı başardım. Ama iki parametreli saklı bir prosedür oluşturmaya çalıştığımda garip sonuçlara rastlarım. İki parametreyi sağladığımda, tüm satırların toplamını alıyorum ve parametre çifti ile eşleşmesi gereken satırları değil.clr saklı yordamları
Gerçek tablomdaki iki parametre tblRoute, her iki veri türü devarype50 ile birlikte DepCity ve ArvCity olarak adlandırılmıştır.
Bu mevcut karmaşıklığın, sql sunucusunun kendisinde çözülmesi gerektiğini anlıyorum, ancak bu, clr saklı yordamlar için bir eğitim uygulamasıdır. Sorgunun kendisinde parametrelerin birini kullanarak değil
using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
public partial class StoredProcedures
{
[Microsoft.SqlServer.Server.SqlProcedure]
public static void RouteSqlStoredProcedure(SqlString strDepCity, SqlString strArvCity)
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "Context Connection=true";
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
conn.Open();
cmd.CommandText = "SELECT tblAirline.AirlineName, tblAircraft.Manufacturer, tblAircraft.AircraftModel, tblAircraft.AircraftUnits, tblAircraft.SeatCapacity, tblAircraft.TotalCapacity, tblRoute.FlightNr, tblRoute.DepCity, tblRoute.ArvCity FROM tblAircraft INNER JOIN tblAircraftRoute ON tblAircraft.AircraftID = tblAircraftRoute.AircraftID INNER JOIN tblAirline ON tblAircraft.AirlineID = tblAirline.AirlineID INNER JOIN tblRoute ON tblAircraftRoute.RouteID = tblRoute.RouteID";
SqlParameter paramDep = new SqlParameter("@strDepCity", SqlDbType.NVarChar, 50);
paramDep.Direction = ParameterDirection.Input; // optional as it is the default
paramDep.Value = strDepCity.Value;
cmd.Parameters.Add(paramDep);
SqlParameter paramArr = new SqlParameter("@strArvCity", SqlDbType.NVarChar, 50);
paramArr.Direction = ParameterDirection.Input; // optional as it is the default
paramArr.Value = strArvCity.Value;
cmd.Parameters.Add(paramArr);
SqlDataReader sqldr = cmd.ExecuteReader();
SqlContext.Pipe.Send(sqldr);
sqldr.Close();
conn.Close();
}
}
Aptal, ama tabiki :) – user2371684