【问题标题】:store procedure don't return any data asp.net sql server 2008 r2存储过程不返回任何数据 asp.net sql server 2008 r2
【发布时间】:2014-12-05 04:58:10
【问题描述】:

我正在编写过滤器搜索功能。也就是说,用户将根据 任何记录日期时间或名称、编号。

这里我也从其他表返回数据。所以我也实现了内部连接。 为此,我的存储过程如下-

ALTER PROC [dbo].[spFilterSearch]

@var1 VARCHAR(10),
@var2 VARCHAR(10),
@Printdate DATETIME,
@ToDate varchar(10),
@FromDate varchar(10)

AS BEGIN
    DECLARE @td DateTime SET @td=CONVERT(DATETIME,@ToDate,105)
    DECLARE @fd DateTime SET @fd= CONVERT(DATETIME,@FromDate,105)
    if(@Printdate <> NULL)
        BEGIN
            SELECT cVar1, cVar2, Printdate,
            bg.Fname AS Name
            FROM dbo.Table1 
            INNER JOIN dbo.jTable2 jt ON Table1.id = jt.id
            WHERE(cVar1 LIKE @var1+'%') AND
            (cVar2 LIKE @var2+'%') 
            AND (convert(datetime,Printdate,105)=@FPdate)
        END
    ELSE
        BEGIN
            SELECT cVar1, cVar2, Printdate,
            bg.Fname AS Name
            FROM dbo.Table1 
            INNER JOIN dbo.jTable2 jt ON Table1.id = jt.id
            WHERE(cVar1 LIKE @var1+'%') AND
            (cVar2 LIKE @var2+'%') 
            AND (convert(DATETIME,Printdate,105)>=@fd AND convert(DATETIME,Printdate,105)<=@td)

        END

END

(此过程不返回任何记录) 在前端 我已经编码,发送空日期我创建了FPdateproperty,如下所示 public DateTime? FPdate { get; set; }

以这种方式我在search event handler中使用它

if (txtPrintedOn.Text != "")
          {
              string[] dtt = txtPrintedOn.Text.Split(' ');
              objprop.FPdate = Convert.ToDateTime(dtt);
          }
          else
          {
              objprop.FPdate = null;
          }

并从业务层以参数的形式发送它,我编写了这样的代码-

if (prop.FPdate.Equals(null))
        {
            cmd.Parameters.AddWithValue("@Printdate", SqlDbType.DateTime).Value = Convert.DBNull;
        }
        else
        {
            cmd.Parameters.Add("@Printdate", SqlDbType.DateTime).Value = prop.FPdate;
        }
if (prop.ToDate != null)
            cmd.Parameters.AddWithValue("@ToDate", SqlDbType.VarChar).Value = prop.ToDate;
        else cmd.Parameters.Add("@ToDate", SqlDbType.VarChar).Value = Convert.DBNull;

最后,数据集返回为空。几个小时以来,我一直在用头撞墙,但没有得到任何线索

我哪里出错了。请提出一种让它运行的方法。

谢谢

【问题讨论】:

  • 你是通过在ssms中执行sp来获取记录吗?
  • sqlserver 中是否缺少@FPdate 参数?
  • 是的,尝试在管理工作室中执行您的程序。
  • 存储过程不返回任何记录。
  • @Mukund 在这里输入时我犯了那个错误,但我没有遗漏任何参数

标签: c# asp.net sql-server-2008


【解决方案1】:

更改 SP 以使用以下

if(@Printdate is not NULL)

查看这些链接 -

Is there any difference between IS NULL and =NULL

SQL is null and = null

使用这个

cmd.Parameters.Add("@FPdate", SqlDbType.DateTime).Value = prop.FPdate.Value;

【讨论】:

  • 我已按照您的建议进行了更改,但此过程仍然没有返回任何记录
  • 有没有直接在management studio 中尝试过sp? , 也使用.Value 作为可空属性。
  • 是的,我做了,你能给我一个例子,我应该在哪里添加这个 .Value
  • 我还附上了`Convert.DBnull' ..从前端发送空值是否不够......
  • 我认为只要程序不能返回任何数据,我就无法在前端得到它...... :)
猜你喜欢
  • 2015-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-21
  • 2014-11-21
  • 2011-09-29
  • 2015-06-23
  • 1970-01-01
相关资源
最近更新 更多