SQL 存储过程 出错: 从数据类型 nvarchar 转换为 float 时出错。
我有一段SQL存储过程代码如下:ALTERPROCEDURE[dbo].[AA]--'在SQL建立名为AA的存储过程@GPDMnvarchar(50),@GPCNnvar...
我有一段SQL 存储过程代码如下:
ALTER PROCEDURE [dbo].[AA] --'在SQL建立名为AA的存储过程
@GPDM nvarchar(50),
@GPCN nvarchar(50),
@BName nvarchar(50),
@Yopen float
AS
BEGIN
declare @sql nvarchar(4000)
set @sql ='insert into ' + @BName + ' (GPDM,GPCN,Yopen) values(''' + @GPDM +''',''' + @GPCN+ ''','+convert(float,@Yopen)+')'
exec(@sql)
END
在执行过程中出错显示:
消息 8114,级别 16,状态 5,过程 AA,第 11 行
从数据类型 nvarchar 转换为 float 时出错。
_______
试过把SQL改成:
set @sql ='insert into ' + @BName + ' (GPDM,GPCN,Yopen) values(''' + @GPDM +''',''' + @GPCN+ ''','+convert(varchar,@Yopen)+')'
---可以通过,但是数据库里没有增加记录,请高手们指教! 展开
ALTER PROCEDURE [dbo].[AA] --'在SQL建立名为AA的存储过程
@GPDM nvarchar(50),
@GPCN nvarchar(50),
@BName nvarchar(50),
@Yopen float
AS
BEGIN
declare @sql nvarchar(4000)
set @sql ='insert into ' + @BName + ' (GPDM,GPCN,Yopen) values(''' + @GPDM +''',''' + @GPCN+ ''','+convert(float,@Yopen)+')'
exec(@sql)
END
在执行过程中出错显示:
消息 8114,级别 16,状态 5,过程 AA,第 11 行
从数据类型 nvarchar 转换为 float 时出错。
_______
试过把SQL改成:
set @sql ='insert into ' + @BName + ' (GPDM,GPCN,Yopen) values(''' + @GPDM +''',''' + @GPCN+ ''','+convert(varchar,@Yopen)+')'
---可以通过,但是数据库里没有增加记录,请高手们指教! 展开
1个回答
展开全部
函数用错了
str是 返回从数字数据转换而成的字符数据。而你声明的是nvarchar,并且传入的参数是'41e620ee-b34c-499c-b0e6-fc454583e63f',我想你的意思是想转换成字符型数据吧
将str(@StartNum) 替换成cast (@ChannelID as nvarchar)。
create table #(f float, i int)
declare @f float, @i int, @sql nvarchar(1000)
select @f = 1.3, @i = 13
set @sql = 'insert into # values(@f, '+convert(varchar,@i)+')'
exec sp_executesql @sql, N'@f float', @f
select * from #
/*
f i
---------------------- -----------
1.3 13
*/
drop table #
str是 返回从数字数据转换而成的字符数据。而你声明的是nvarchar,并且传入的参数是'41e620ee-b34c-499c-b0e6-fc454583e63f',我想你的意思是想转换成字符型数据吧
将str(@StartNum) 替换成cast (@ChannelID as nvarchar)。
create table #(f float, i int)
declare @f float, @i int, @sql nvarchar(1000)
select @f = 1.3, @i = 13
set @sql = 'insert into # values(@f, '+convert(varchar,@i)+')'
exec sp_executesql @sql, N'@f float', @f
select * from #
/*
f i
---------------------- -----------
1.3 13
*/
drop table #
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询