程序中有 string para =" order by the_time ";
将 para 作为参数传入存储过程  为什么 说 the_time 不是一个有效的时间类型呢?  在索引 1 处有无效字符 ?  情况紧急  
 是不是因为传入的时候 存储过程加上了 '' 导致的呢?  怎样解决呢/

解决方案 »

  1.   

    一定是,除非你的存储过程把把参数连接到要执行的后再使用通过exec调用SQL,才有可能调用成功
      

  2.   

    string para =" order by @the_time";cmd.Parameters.Add("@the_time",SqlDbType.DataTime);
      

  3.   

    the_time你在程序中定义这个字段的时候 要定义成日期类型 DateTime类型
      

  4.   

    sp中group by order by不能使用参数的,order by可以使用别名group by 不可以使用别名
    解决办法是,在sp中用varchar组织一个sql语句,然后调用exec (sql)执行
      

  5.   

    string para =" order by the_time ";把这个当参数传入存储过程,the_time的意义就变了,你要知道存储过程和.net下的SQL语句执行是不同的。
    比如定义一个变量:string mysql = "select * from [UserName]"
    在程序中使用,SqlCommand myComm = new SqlCommand(mysql,myConnection);
    那么,这是可以的,因为程序经过对mysql的分析处理转换成了有效的SQL语句。
    但如果你用存储过程SqlCommand myComm = new SqlCommand(MySqlGC,myConnection);
    myComm.Parameters.Add("@mysql",SqlDbType.NVarChar,50);
    myComm.Parameters["@mysql"].Value = "select * from [UserName]";
    面存储过程[MySqlGC]中这样写
    (
    @mysql NVarChar(50)
    )
    AS
    @mysql
    GO你看,这样能执行mysql的值吗?显然不行的,因为此时SQL把mysql当做一个变量,而不是一个有效的执行语句。
    所以,当你把" order by the_time "赋给一个变量传过存储过程的时候,the_time已经不再是数据表的一个字段,而是para这个变量的一部份,是无效的sql语句,不会执行的。
      

  6.   

    你需要重新组织你存储过程中的SQL字串