用这个存储过程好像不能对 时间字段排序错误提示:“该字符串未被识别为有效的日期时间。有一个从索引 0 处开始的未知字。”能不能给改一下 可以按时间排序的通用存储过程或者是传参有问题?
workParm = mySqlCommand.Parameters.Add("@Sort", SqlDbType.DateTime); 
mySqlCommand.Parameters["@Sort"].Value = "OrderDateTime"; 参数分别是 表名, 页号, 返回记录数, 主键, 排序字段CREATE PROCEDURE dbo.spAll_ReturnRows
(
@SQL nVARCHAR(4000),
@Page int,
@RecsPerPage int,
@ID VARCHAR(255),
@Sort VARCHAR(255)
)
ASDECLARE @Str nVARCHAR(4000)SET @Str='SELECT TOP '+CAST(@RecsPerPage AS VARCHAR(20))+' * FROM ('+@SQL+') T WHERE T.'+@ID+' NOT IN 
(SELECT TOP '+CAST((@RecsPerPage*(@Page-1)) AS VARCHAR(20))+' '+@ID+' FROM ('+@SQL+') T9 ORDER BY '+@Sort+') ORDER BY '+@SortPRINT @StrEXEC sp_ExecuteSql @Str
GO

解决方案 »

  1.   

    workParm = mySqlCommand.Parameters.Add("@Sort", SqlDbType.DateTime); 
    改为
    workParm = mySqlCommand.Parameters.Add("@Sort", SqlDbType.varchar,200);
      

  2.   

    @sort是字符串型,不是日期型
      

  3.   

    存储过程中@sort为varchar,自然参数类型传进来必须一致.
      

  4.   

    我试过了
    workParm = mySqlCommand.Parameters.Add("@Sort", SqlDbType.DateTime); 
    改为
    workParm = mySqlCommand.Parameters.Add("@Sort", SqlDbType.varchar,200);错误提示 :列名 'OrderDateTime' 无效。列名 'OrderDateTime' 无效。 
      

  5.   

    包括
    @Sort VARCHAR(255) 传参  workParm = mySqlCommand.Parameters.Add("@Sort", SqlDbType.varchar,200);@Sort DateTime 传参  workParm = mySqlCommand.Parameters.Add("@Sort", SqlDbType.DateTime); 都不行
      

  6.   

    ORDER BY '+@Sort中@Sort的值必须是该表中的一个字段,确认OrderDateTime是否是表的字段.
    假如userid是数据库字段,则
    workParm = mySqlCommand.Parameters.Add("@Sort", SqlDbType.varchar,50); 
    mySqlCommand.Parameters["@Sort"].Value = " userid";
      

  7.   

    错误提示 :列名 'OrderDateTime' 无效。列名 'OrderDateTime' 无效。
    ----------------
    说明OrderDateTime字段在该数据库中不存在
      

  8.   

    这个表中有OrderDateTime字段 只用这段程序和存储过程操作一个表
      

  9.   

    ORDER BY convert(datetime,@Sort) 
      

  10.   

    问题解决了  ,原来传递@SQL nVARCHAR(4000)的SQL语句里也要包括orderDateTime