SQL Server - 2014. Visual Studio 2017.
Я пытаюсь передать 3 параметра в SQL Server, но получаю эту ошибку:
System.Data.SqlClient.SqlException: 'Должен объявить скалярную переменную "@ Title1Item".'
Я включил код на стороне C # и SQL Server. Может кто-нибудь сказать мне, что я делаю не так?
public DataTable GetInventoryByAssetDescription (string Desc, string DispositionText, bool Title1Item) {
DataTable myRecords = new DataTable();
using (SqlConnection cn = new SqlConnection (ConnectionString)) {
// Specify which stored procedure to use and add a parameter.
SqlCommand cmd = new SqlCommand ("GetInventoryByAssetDescription", cn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue ("@SearchString", Desc);
cmd.Parameters.AddWithValue ("@DispositionText", DispositionText);
cmd.Parameters.AddWithValue ("@Title1Item", Title1Item);
SqlDataAdapter da = new SqlDataAdapter (cmd);
cn.Open();
da.Fill (myRecords);
}
ALTER PROCEDURE [dbo].[GetInventoryByAssetDescription] (
@SearchString varchar(30),
@DispositionText varchar(200),
@Title1Item bit
)
Я ожидаю, что 3 параметра будут переданы в хранимую процедуру, но я получаю эту ошибку в строке da.fill (myRecords):
System.Data.SqlClient.SqlException: 'Необходимо объявить скалярную переменную "@ Title1Item".'
РЕДАКТИРОВАТЬ: Простите, ребята. Ржавый старый программист здесь. Код хранимой процедуры:
USE [Inventory]
GO
/****** Object: StoredProcedure [dbo].[GetInventoryByAssetDescription] Script Date: 6/4/2019 8:30:15 AM ******/
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
ALTER PROCEDURE [dbo].[GetInventoryByAssetDescription]
(
@SearchString varchar(30),
@DispositionText varchar(200),
@Title1Item bit
)
AS
begin
SET NOCOUNT ON
declare @sql nvarchar (2000)
select @SearchString=UPPER(@SearchString)
set @sql = ' select in_eq_ID,
in_eq_TagNumber as TagNumber,
Title1Item,
in_eq_AssetDescription as Description,
in_eq_ExtendedDescription as ExtendedDescription,
in_eq_SerialNumber as SerialNumber,
in_eq_ValuationAmount as TotalValue,
in_eq_CustodianName as Name,
in_eq_ComplexBuilding as ShortLocation,
in_eq_SubLocationCode as ShortRoomNumber,
in_ca_Categories.in_ca_CategoryName as CategoryName,
in_eq_DispositionDate as DispositionDate,
DATEADD (dd, 0, DATEDIFF (dd, 0, in_eq_Equipment.in_eq_AcquisitionDate)) as AcquisitionDate
from in_eq_Equipment
LEFT JOIN in_ca_Categories ON in_eq_Equipment.in_eq_CategoryID_fk = in_ca_Categories.in_ca_CategoryID
where @Title1Item = Title1Item
AND upper (in_eq_AssetDescription) LIKE upper ('''+ @SearchString + ''')'
set @sql=@sql+' ' + ISNULL(@DispositionText,' ') + ' order by in_eq_AssetDescription'
execute (@sql)
return
end