用这个存储过程好像不能对 时间字段排序错误提示:“该字符串未被识别为有效的日期时间。有一个从索引 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
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
改为
workParm = mySqlCommand.Parameters.Add("@Sort", SqlDbType.varchar,200);
workParm = mySqlCommand.Parameters.Add("@Sort", SqlDbType.DateTime);
改为
workParm = mySqlCommand.Parameters.Add("@Sort", SqlDbType.varchar,200);错误提示 :列名 'OrderDateTime' 无效。列名 'OrderDateTime' 无效。
@Sort VARCHAR(255) 传参 workParm = mySqlCommand.Parameters.Add("@Sort", SqlDbType.varchar,200);@Sort DateTime 传参 workParm = mySqlCommand.Parameters.Add("@Sort", SqlDbType.DateTime); 都不行
假如userid是数据库字段,则
workParm = mySqlCommand.Parameters.Add("@Sort", SqlDbType.varchar,50);
mySqlCommand.Parameters["@Sort"].Value = " userid";
----------------
说明OrderDateTime字段在该数据库中不存在