现在需要改进分页存储过程,因为添加了按日期获取贴子、按字段排序、选择排序方式功能。这就需要设置一些变量,来接收这些来自应用程序的值,然后和select、where字符串连接起来。
代码:
declare @chengji int,@sql varchar(800)
select @chengji=70
set @sql='select * from stu where 成绩='+@chengji
print @sql
但问题来了,总是提示: 在将 varchar 值 'select * from stu where 成绩=' 转换成数据类型 int 时失败。
若改成:
declare @chengji varchar(800),@sql varchar(800)
select @chengji='a'
set @sql='select * from stu where 成绩='''+@chengji+''''
print @sql
就可以。
========================================================
查证后:原因及解决方法如下:
因为@chengji是整型,整型不能和字符型直接用+号连接,要先转为字符型再连接
试试:
declare @chengji int,@sql varchar(800)
select @chengji=70
set @sql= 'select * from stu where 成绩= '+rtrim(@chengji)
print @sql
正常
declare @chengji int,@sql varchar(800)
select @chengji=70
set @sql= 'select * from stu where 成绩= '+cast(@chengji as varchar(10))
print @sql
正常
declare @chengji int,@sql varchar(800)
select @chengji=70
set @sql= 'select * from stu where 成绩= '+convert(varchar(10),@chengji)
print @sql
正常
代码:
declare @chengji int,@sql varchar(800)



但问题来了,总是提示: 在将 varchar 值 'select * from stu where 成绩=' 转换成数据类型 int 时失败。
若改成:
declare @chengji varchar(800),@sql varchar(800)



就可以。
========================================================
查证后:原因及解决方法如下:
因为@chengji是整型,整型不能和字符型直接用+号连接,要先转为字符型再连接
试试:





正常





正常




正常