SqlParameter[] parms = new SqlParameter[5];
            parms[0] = new SqlParameter("@PNRNumber", search.PnrNumber);
            parms[1] = new SqlParameter("@InvoiceNumber", search.InvoiceNumber);
            parms[2] = new SqlParameter("@StarDate",search.StarDate);//
            parms[3] = new SqlParameter("@EndDate",search.EndDate);//search.StarDate search.EndDate均为datetime类型
            parms[4] = new SqlParameter("@PaymentStatus",search.Status);
            DataTable table = SqlHelper.ExecuteDataTable(CommandType.StoredProcedure, "proc_search", parms);
            return table;
alter proc proc_search
@PNRNumber varchar(20),
@InvoiceNumber varchar(50),
@StarDate datetime,
@EndDate datetime,
@PaymentStatus varchar(50)
as
declare @str varchar(2000)
set @str='select PaymentInfo.PNR,PaymentInfo.EpositDate,PaymentInfo.InvoiceNumber,PaymentInfo.PayType,PaymentInfo.PaymentStatus,
PaymentInfo.AgentCode,PaymentInfo.SubAgentCode,PassengerInfo.FirstName,PassengerInfo.LastName
from PaymentInfo,PassengerInfo where PaymentInfo.PassengerId=PassengerInfo.PassengerId '
if(@PNRNumber<>'')
begin
set @str=@str+' and PaymentInfo.PNR='+@PNRNumber
end
if(@InvoiceNumber<>'')
begin
set @str=@str+' and PassengerInfo.InvoiceNumber='+@InvoiceNumber
end
if(@StarDate<>'' and @EndDate='')
begin
set @str=@str+' and PassengerInfo.EpositDate>'+@StarDate
end
if(@StarDate='' and @EndDate<>'')
begin
set @str=@str+' and PassengerInfo.EpositDate<'+@EndDate
end
if(@StarDate<>'' and @EndDate<>'')
begin
set @str=@str+' and PassengerInfo.EpositDate between'+@StarDate+' and '+@EndDate
end
if(@PaymentStatus<>'')
begin
set @str=@str+@PaymentStatus
end
set @str=@str+' order by PaymentInfo.EpositDate desc '
exec(@str)传入的时候老是在sqlhepler里异常 报出现无法转换为datetime类型的问题

解决方案 »

  1.   

    declare @PNRNumber varchar(20)
    declare @InvoiceNumber varchar(50)
    declare @StarDate datetime
    declare @StarDatedatetime datetime
    declare @PaymentStatus varchar(50)
    set @PNRNumber=''
    set @InvoiceNumber=''
    set @StarDate=cast('2012-03-14' as datetime)
    set @StarDate=cast('2012-04-20' as datetime)
    set @PaymentStatus=' and PaymentInfo.PaymentStatus=''Audit'''
    exec proc_search @PNRNumber,@InvoiceNumber,@StarDate,@StarDatedatetime,@PaymentStatus
    我这样执行这个存储过程一点问题都没有
    就是不知道怎么把c#中的datetime传给存储过程中的datetime类型参数
    快烦死了
      

  2.   

    存储过程传参数,给点参考
    http://www.cnblogs.com/VitoriaTang/archive/2006/08/04/467765.html
    http://www.bcbbs.net/news/Content32211.aspx
      

  3.   

    你要将DateTime转换成字符串  Convert.ToDateTime(search.StarDate)  就应该可以了