当前位置: 代码迷 >> Sql Server >> SQL语句拼接的难题解决思路
  详细解决方案

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

热度:9   发布时间:2016-04-27 13:00:12.0
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([email protected]+',[email protected]+',[email protected]+',[email protected]+',[email protected]+') WHERE Sort=00'
print @upsql

其实dbo.SetYE函数的前四个参数都是numeric(28, 8)类型的,[email protected](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' 中对带副作用的或依赖于时间的运算符的使用无效。

  相关解决方案