SQL:将数据类型 varchar 转换为 int 时出错。

来源:百度知道 编辑:UC知道 时间:2024/06/18 14:21:19
alter procedure select_column1 @column1 char(10),@column2 int
as
begin
declare @sql1 nchar(400),@sql2 int
set @sql1='select '+@column1+'from course1'
set @sql2='select '+@column2+'from course1'
exec sp_executesql @sql1,@sql2
end
exec select_column1 'cname','ccredit'
为什么呢……
那要怎么改呢~
ccredit我定的是int型没错。
ccredit的值还是出不来啊……
我试过了,只有cname……学分出不来

具体点吧……

首先@sql2的类型错了,第二@column2的类型也不对,第三,在动态语句中没有在from前面加空格,其次,动态的话用sp_executesql的话,一次两句是不行的,改成这样:
alter procedure select_column1
@column1 nvarchar(10),@column2 nvarchar(10)
as
begin
declare @sql1 nvarchar(200),@sql2 nvarchar(200)
set @sql1='select '+@column1+' from course1'
set @sql2='select '+@column2+' from course1'
exec sp_executesql @sql1
exec sp_executesql @sql2
end
然后
exec select_column1 'cname','ccredit'
构架动态语句的时候用nvarchar好
.....我知道ccredit字段的数据是int型,但你传到存储过程的是字段的名字,‘crredit’当然要用char型。
你把我上面那一段复制到sql里运行一下就知道了

alter procedure select_column1 @column1 char(10),@column2 char(10)
as
begin
declare @sql1 nchar(400)--,@sql2 nchar(400)
set @sql1='select '+@column1 +','+ @column2 +'from course1'
exec(@sql1)
end
exec select_column1 'cname','ccredit'

--看看这是不是你想要的。