首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

SQL语句拼接的难题解决思路

2012-05-08 
SQL语句拼接的难题declare @qcyed numeric(28, 8)declare @qcyec numeric(28, 8)declare @bqbdd numeric(2

SQL语句拼接的难题
declare @qcyed numeric(28, 8)
declare @qcyec numeric(28, 8)
declare @bqbdd numeric(28, 8)
declare @bqbdc numeric(28, 8)
declare @t varchar(10)
set @qcyed=120
set @qcyec=200
set @bqbdd=350
set @bqbdc=500
set @t='Z'

declare @upsql nvarchar(MAX)
SET @upsql=N'UPDATE tb_Rpt_ZCFZ SET Col=dbo.SetYE('+@qcyed+','+@qcyec+','+@bqbdd+','+@bqbdc+','+@t+') WHERE Sort=00'
print @upsql

其实dbo.SetYE函数的前四个参数都是numeric(28, 8)类型的,最后一个@t是varchar(10)类型

最后提示如下:
从数据类型 nvarchar 转换为 numeric 时出错。

求高手指点!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

[解决办法]

SQL code
DECLARE @qcyed NUMERIC(28, 8)DECLARE @qcyec NUMERIC(28, 8)DECLARE @bqbdd NUMERIC(28, 8)DECLARE @bqbdc NUMERIC(28, 8)DECLARE @t VARCHAR(10)SET @qcyed = 120SET @qcyec = 200SET @bqbdd = 350SET @bqbdc = 500SET @t = 'Z'DECLARE @upsql NVARCHAR(MAX)SET @upsql = N'UPDATE tb_Rpt_ZCFZ SET Col=dbo.SetYE(' + LTRIM(@qcyed) + ','    + LTRIM(@qcyec) + ',' + LTRIM(@bqbdd) + ',' + LTRIM(@bqbdc) + ',' + @t    + ') WHERE Sort=00'PRINT @upsql
[解决办法]
探讨
我用exec(@upsql)后出现如下错误:

在函数内的 'EXECUTE STRING' 中对带副作用的或依赖于时间的运算符的使用无效。

热点排行