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

alterprocedureselect_column1@column1char(10),@column2intasbegindeclare@sql1nchar(400)... 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……学分出不来

具体点吧……
展开
 我来答
shutao917
2008-12-13 · TA获得超过1213个赞
知道大有可为答主
回答量:2199
采纳率:0%
帮助的人:3127万
展开全部
首先@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里运行一下就知道了
姜童六丰茂
2020-06-13 · TA获得超过1033个赞
知道小有建树答主
回答量:1658
采纳率:100%
帮助的人:7.6万
展开全部
1、varchar是字符串类型,而int是数字整型。varchar类型可以存储任意字符,而int只能存储数字整型所以会报错;
2、你可以将int类型转换为varchar类型,因为varchar可以存储任意的字符;例如:123(一百二十三)位int类型,当你将123转为varchar类型之后就变成了123(一二三)。如果你讲abc
varchar类型转换为abc
int类型时是无法转换的;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c53a071
2008-12-13 · TA获得超过697个赞
知道小有建树答主
回答量:2622
采纳率:0%
帮助的人:935万
展开全部
'ccredit'
这是一个字符串,你是"真正"的不可能把他转成数字的.

'12341234'
'098093485093'

这样的你要转成数字完全没问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Sharon_QQ
2008-12-18 · TA获得超过492个赞
知道小有建树答主
回答量:362
采纳率:0%
帮助的人:373万
展开全部
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'

--看看这是不是你想要的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Paradise猪
2008-12-13 · TA获得超过734个赞
知道小有建树答主
回答量:961
采纳率:0%
帮助的人:444万
展开全部
varchar的长度比int长,你能这样转化~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式