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……学分出不来
具体点吧…… 展开
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 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里运行一下就知道了
展开全部
1、varchar是字符串类型,而int是数字整型。varchar类型可以存储任意字符,而int只能存储数字整型所以会报错;
2、你可以将int类型转换为varchar类型,因为varchar可以存储任意的字符;例如:123(一百二十三)位int类型,当你将123转为varchar类型之后就变成了123(一二三)。如果你讲abc
varchar类型转换为abc
int类型时是无法转换的;
2、你可以将int类型转换为varchar类型,因为varchar可以存储任意的字符;例如:123(一百二十三)位int类型,当你将123转为varchar类型之后就变成了123(一二三)。如果你讲abc
varchar类型转换为abc
int类型时是无法转换的;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
'ccredit'
这是一个字符串,你是"真正"的不可能把他转成数字的.
'12341234'
'098093485093'
这样的你要转成数字完全没问题
这是一个字符串,你是"真正"的不可能把他转成数字的.
'12341234'
'098093485093'
这样的你要转成数字完全没问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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'
--看看这是不是你想要的。
as
begin
declare @sql1 nchar(400)--,@sql2 nchar(400)
set @sql1='select '+@column1 +','+ @column2 +'from course1'
exec(@sql1)
end
exec select_column1 'cname','ccredit'
--看看这是不是你想要的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
varchar的长度比int长,你能这样转化~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询