具有两个 in 参数的 clr 存储过程

clr stored procedures with two in parameters

我开始学习clr存储过程了。我已经设法使用一个存储过程完成一项工作。但是当我尝试创建一个带有两个 in 参数的存储过程时,我 运行 得到了奇怪的结果。当我提供这两个参数时,我得到的是所有可用行的总数,而不是应该与参数对匹配的行。

我实际 table 中的两个参数,tblRoute 分别命名为 DepCity 和 ArvCity,数据类型均为 nvarchar50。

我明白当前的复杂性应该在 sql 服务器本身中解决,但这是我对 clr 存储过程的培训练习。

谢谢

这是我的代码:

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

您没有在查询本身中使用任何一个参数。 SQL 服务器无法确定在查询中应如何使用提供的参数。您需要向查询添加适当的 WHERE 条件并引用这些参数。