存储过程
ALTER procedure [dbo].[AddToDayResult]
@ICCode char(10) = null,
@AtdDate char(8),
@TimeS int,
@TimeE int,
@TimeO int,
@Time1 int,
@Time2 int,
@MachineCode char(1)
as
BEGIN
select a.ICCode,
(select top 1 Date from [Lean].[dbo].[Atd_DataReceive] where ICCode=a.ICCode) as 'AtdDate',
(select top 1 Time from [Lean].[dbo].[Atd_DataReceive] where ICCode=a.ICCode and Time between 745 and 815) as 'TimeS',
(select top 1 Time from [Lean].[dbo].[Atd_DataReceive] where ICCode=a.ICCode and Time between 1710 and 1725) as 'TimeE',
(select top 1 Time from [Lean].[dbo].[Atd_DataReceive] where ICCode=a.ICCode and Time between 1915 and 1925) as 'TimeO',
(select top 1 Time from [Lean].[dbo].[Atd_DataReceive] where ICCode=a.ICCode and Time between 815 and 1210) as 'Time1',
(select top 1 Time from [Lean].[dbo].[Atd_DataReceive] where ICCode=a.ICCode and Time between 1300 and 1710) as 'Time2',
(select top 1 MachineCode from [Lean].[dbo].[Atd_DataReceive] where ICCode = a.ICCode) as 'MachineCode'
from (select ICCode from [Lean].[dbo].[Atd_DataReceive] group by ICCode) as a
END
C#代码
public List<DayResult> AddToDayResult(string iCCode)
{ List<DayResult> dayResult = new List<DayResult>(); SqlParameter[] parms = new SqlParameter[]{
new SqlParameter("@ICCode", SqlDbType.Char, 10),
new SqlParameter("@AtdDate", SqlDbType.Char, 8),
new SqlParameter("@TimeS", SqlDbType.Int),
new SqlParameter("@TimeE", SqlDbType.Int),
new SqlParameter("@TimeO", SqlDbType.Int),
new SqlParameter("@Time1", SqlDbType.Int),
new SqlParameter("@Time2", SqlDbType.Int),
new SqlParameter("@MachineCode", SqlDbType.Char,1)
};
parms[0].Value = iCCode;
using (SqlDataReader rdr = SQLHelper.ExecuteReaderStoredProcedure("AddToDayResult", parms))
{
while (rdr.Read())
{
dayResult.Add(new DayResult
{
ICCode = rdr.GetString(0),
AtdDate = rdr.GetString(1),
TimeS = Convert.ToString(rdr.GetInt32(2)),
TimeE = Convert.ToString(rdr.GetInt32(3)),
TimeO = Convert.ToString(rdr.GetInt32(4)),
Time1 = Convert.ToString(rdr.GetInt32(5)),
Time2 = Convert.ToString(rdr.GetInt32(6)),
MachineCode = rdr.GetString(7)
});
}
}
return dayResult;
}
报错:过程或函数 'AddToDayResult' 需要参数 '@AtdDate',但未提供该参数
诚心求教
ALTER procedure [dbo].[AddToDayResult]
@ICCode char(10) = null,
@AtdDate char(8),
@TimeS int,
@TimeE int,
@TimeO int,
@Time1 int,
@Time2 int,
@MachineCode char(1)
as
BEGIN
select a.ICCode,
(select top 1 Date from [Lean].[dbo].[Atd_DataReceive] where ICCode=a.ICCode) as 'AtdDate',
(select top 1 Time from [Lean].[dbo].[Atd_DataReceive] where ICCode=a.ICCode and Time between 745 and 815) as 'TimeS',
(select top 1 Time from [Lean].[dbo].[Atd_DataReceive] where ICCode=a.ICCode and Time between 1710 and 1725) as 'TimeE',
(select top 1 Time from [Lean].[dbo].[Atd_DataReceive] where ICCode=a.ICCode and Time between 1915 and 1925) as 'TimeO',
(select top 1 Time from [Lean].[dbo].[Atd_DataReceive] where ICCode=a.ICCode and Time between 815 and 1210) as 'Time1',
(select top 1 Time from [Lean].[dbo].[Atd_DataReceive] where ICCode=a.ICCode and Time between 1300 and 1710) as 'Time2',
(select top 1 MachineCode from [Lean].[dbo].[Atd_DataReceive] where ICCode = a.ICCode) as 'MachineCode'
from (select ICCode from [Lean].[dbo].[Atd_DataReceive] group by ICCode) as a
END
C#代码
public List<DayResult> AddToDayResult(string iCCode)
{ List<DayResult> dayResult = new List<DayResult>(); SqlParameter[] parms = new SqlParameter[]{
new SqlParameter("@ICCode", SqlDbType.Char, 10),
new SqlParameter("@AtdDate", SqlDbType.Char, 8),
new SqlParameter("@TimeS", SqlDbType.Int),
new SqlParameter("@TimeE", SqlDbType.Int),
new SqlParameter("@TimeO", SqlDbType.Int),
new SqlParameter("@Time1", SqlDbType.Int),
new SqlParameter("@Time2", SqlDbType.Int),
new SqlParameter("@MachineCode", SqlDbType.Char,1)
};
parms[0].Value = iCCode;
using (SqlDataReader rdr = SQLHelper.ExecuteReaderStoredProcedure("AddToDayResult", parms))
{
while (rdr.Read())
{
dayResult.Add(new DayResult
{
ICCode = rdr.GetString(0),
AtdDate = rdr.GetString(1),
TimeS = Convert.ToString(rdr.GetInt32(2)),
TimeE = Convert.ToString(rdr.GetInt32(3)),
TimeO = Convert.ToString(rdr.GetInt32(4)),
Time1 = Convert.ToString(rdr.GetInt32(5)),
Time2 = Convert.ToString(rdr.GetInt32(6)),
MachineCode = rdr.GetString(7)
});
}
}
return dayResult;
}
报错:过程或函数 'AddToDayResult' 需要参数 '@AtdDate',但未提供该参数
诚心求教
parms[1].Value = ...
...
也就是 parms[1].Value 你给值了没? 可以在查询分析器,调试,打印出来。