2016-04-08 32 views
0

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(); 
} 
} 

cevap

0

:

Teşekkür İşte

benim kodudur. SQL Server, sağlanan parametrelerin bir sorguda nasıl kullanıldığını belirleyemez. Sorguya uygun WHERE koşulunu eklemeniz ve bu parametrelere başvurmanız gerekir.

+0

Aptal, ama tabiki :) – user2371684

İlgili konular