を私は実行時エラーを持っている:がスカラー変数を宣言しなければなりません「@ManagerID」
: は、私はすべての私のクラスの変数やマイProcudure 私のクラスコードを宣言しましマネージャーID イム@スカラー変数\ "は確かに宣言する必要がありますpublic DataTable Select(int ID,string NameFa, string Address, int ManagerID, short TotalUnits, int ChargeMethodID)
{
DataTable table = new DataTable();
table.Columns.Add("ID", typeof(int));
table.Columns.Add("NameFa", typeof(string));
table.Columns.Add("Address", typeof(string));
table.Columns.Add("ManagerID", typeof(int));
table.Columns.Add("TotalUnits", typeof(short));
table.Columns.Add("ChargeMethodID", typeof(int));
try
{
con.Open();
SqlCommand command = new SqlCommand("dbo.SelectBuilding", con);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(new SqlParameter("@ID", ID));
command.Parameters.Add(new SqlParameter("@NameFa", NameFa));
command.Parameters.Add(new SqlParameter("@Address", Address));
command.Parameters.Add(new SqlParameter("@ManagerID", ManagerID));
command.Parameters.Add(new SqlParameter("@TotalUnits", TotalUnits));
command.Parameters.Add(new SqlParameter("@ChargeMethodID", ChargeMethodID));
SqlDataAdapter adapter = new SqlDataAdapter(command);
adapter.Fill(table);
return table;
}
そして私Procudureコードです:
@ID int,
@NameFa nvarchar(150),
@Address nvarchar(MAX),
@ManagerID int,
@TotalUnits smallint,
@ChargeMethodID int
As
Begin
IF(@ID >0)
Begin
Select ID,NameFa,Address,ManagerID,TotalUnits,ChargeMethodID From Buildings where ID = @ID
End
ELSE
Begin
Declare @sqlTxt nvarchar(MAX)
SET @sqlTxt = 'SELECT ID,NameFa,Address,ManagerID,TotalUnits,ChargeMethodID FROM Buildings where ID>0'
IF(@NameFa!= null)
BEGIN
SET @sqlTxt = @sqlTxt + ' AND NameFa Like ''%@NameFa%'''
END
IF(@Address!= null)
BEGIN
SET @sqlTxt = @sqlTxt + ' AND Address Like ''%@Address%'''
END
IF(@ManagerID > 0)
BEGIN
SET @sqlTxt = @sqlTxt + ' AND ManagerID = @ManagerID'
END
IF(@TotalUnits > 0)
BEGIN
SET @sqlTxt = @sqlTxt + ' AND TotalUnits = @TotalUnits'
END
IF(@ChargeMethodID > 0)
BEGIN
SET @sqlTxt = @sqlTxt + ' AND ChargeMethodID = @ChargeMethodID'
END
EXEC (@sqlTxt);
End
END
そして、私は選択機能を使用したい:
DataTable dt = new DataTable();
Buildings.Building bb = new Buildings.Building() {ID=0,NameFa="",Address="",ManagerID=OwnerID,TotalUnits=0,ChargeMethodID=0 };
dt = bu.Select(bb.ID,bb.NameFa,bb.Address,bb.ManagerID,bb.TotalUnits,bb.ChargeMethodID);
そしてこれを解決するには? ( あなたの投稿は主にコードであると思われますので、詳細を追加してください)。
実行時にOWNERIDの値は何ですか? – user2657943
'あなたの投稿は主にコードであるようです。いくつかの詳細を追加してください '。 –
この値を持つビルドExcives SQL Serverでテストしますが、Procudureで実行されません。 –