我有一个错误的代码块,因为我在Int
内使用了Nvarchar
变量。
DECLARE @FattAnnoCorrente INT;
DECLARE @Tabscontianno1 NVARCHAR(MAX);
SET @Tabscontianno1 =
N'<p align="left"><b>ANNO ' + @Anno1 + ' - </b><b>' + @FattAnnoCorrente + '<br>
</b></p>
<table height="62" border="1" cellpadding="2" cellspacing="2"
width="501">
<tbody>
<tr>
<td valign="top">FATTURATO<br>
</td>
<td valign="top">SCONTO<br>
</td>
</tr>' + CAST ((
SELECT
td = SUM(TOTNETTORIGA), '',
td = SCONTIESTESI
FROM .dbo.TESTEDOCUMENTI
INNER JOIN .dbo.RIGHEDOCUMENTI
ON PROGRESSIVO=IDTESTA AND TOTNETTORIGA <>'0'
WHERE CODCLIFOR = @CodiceCliente AND .dbo.TESTEDOCUMENTI.DOCCHIUSO = '0' AND .dbo.TESTEDOCUMENTI.BLOCCATO = '0' AND .dbo.TESTEDOCUMENTI.TIPODOC = 'FVC' AND .dbo.TESTEDOCUMENTI.ESERCIZIO = YEAR(GETDATE())
GROUP BY TESTEDOCUMENTI.ESERCIZIO,SCONTIESTESI
FOR XML PATH('tr'), TYPE )
AS NVARCHAR(MAX) ) +
N' </tbody>
</table>'+
N'<BR/>' ;
我收到此错误:
将nvarchar值' ANNO 2016 - '转换为数据类型int时转换失败。
如果我使用
CAST(CAST(COALESCE(@FattAnnoCorrente) as int) as varchar(255))
我反而得到了这些错误:
Msg 102,Level 15,State 1,Line 154
')'附近的语法不正确。
消息156,15级,状态1,行173 关键字“FOR”附近的语法不正确。
你能帮我解决这个问题吗?
将其插入nvarchar
变量后,我需要将其格式化为金钱:
'€ ' + REPLACE(CONVERT(varchar, CAST(@FattAnnoCorrente AS money), 105),',','.')
谢谢你们!
答案 0 :(得分:1)
您需要将所有INT
类型投射到VARCHAR
..
在您的情况下,您首先将它们转换为INT ..
更改以下声明
CAST(CAST(COALESCE(@FattAnnoCorrente) as int) as varchar(255))
到
cast(COALESCE(@FattAnnoCorrente,'somevalue') as varchar(255))