你好我正在制作一个存储过程,我在输出带打印的代码时遇到问题,因为稍后我需要将变量写入临时数据库。 这是代码:
SELECT
fmsTotalAmount + fmsAirTotalAmount + fmsProjectsTotalAmount TotalAmount,
fmsRelationAmount + fmsAirRelationAmount + fmsProjectsRelationAmount TotalRelationAmount
FROM (
SELECT
SUM(
CASE WHEN fms1.currency != 'EUR'
THEN fms1.Amount * fms1.Rate
ELSE ISNULL(fms1.Amount, 0) END) fmsTotalAmount,
SUM(
CASE WHEN fms1.relationcode = 'SHIP02'
THEN
CASE WHEN fms1.currency != 'EUR'
THEN fms1.Amount * fms1.Rate
ELSE ISNULL(fms1.Amount, 0) END
ELSE 0 END) fmsRelationAmount,
SUM(
CASE WHEN fmsAir1.currency != 'EUR'
THEN fmsAir1.Amount * fmsAir1.Rate
ELSE ISNULL(fmsAir1.Amount, 0) END) fmsAirTotalAmount,
SUM(
CASE WHEN fmsProjects1.relationcode = 'SHIP02'
THEN
CASE WHEN fmsProjects1.currency != 'EUR'
THEN fmsProjects1.Amount * fmsAir1.Rate
ELSE ISNULL(fmsProjects1.Amount, 0) END
ELSE 0 END) fmsAirRelationAmount,
SUM(
CASE WHEN fmsProjects1.currency != 'EUR'
THEN fmsProjects1.Amount * fmsAir1.Rate
ELSE ISNULL(fmsProjects1.Amount, 0) END) fmsProjectsTotalAmount,
SUM(
CASE WHEN fmsProjects1.relationcode = 'SHIP02'
THEN
CASE WHEN fmsProjects1.currency != 'EUR'
THEN fmsProjects1.Amount * fmsProjects1.Rate
ELSE ISNULL(fmsProjects1.Amount, 0) END
ELSE 0 END) fmsProjectsRelationAmount
FROM [fms].[dbo].[file] f
LEFT JOIN [fms].[dbo].[outgoinginvoiceline] fms1 ON
fms1.filenumber = CONVERT(NVARCHAR, f.filenumber)
LEFT JOIN [fmsAir].[dbo].[outgoinginvoiceline] fmsAir1 ON
fmsAir1.filenumber = CONVERT(NVARCHAR, f.filenumber)
LEFT JOIN [fmsProjects].[dbo].[outgoinginvoiceline] fmsProjects1 ON
fmsProjects1.filenumber = CONVERT(NVARCHAR, f.filenumber)
) a
现在我要打印此SELECT语句的输出。但是当我这样做时:
打印'发票总额:' + CONVERT(nvarchar,fmsTotalAmount)+'€此关系' 打印'总发票金额:' + CONVERT(nvarchar,fmsTotalRelationAmount)+'€'
但后来我收到以下错误:
名称" fmsTotalAmount"在这种情况下是不允许的。有效 表达式是常量,常量表达式和(在某些情况下) 上下文)变量。不允许使用列名。
名称" fmsTotalRelationAmount"在这种情况下是不允许的。 有效表达式是常量,常量表达式和(在某些情况下) 上下文)变量。不允许使用列名。
在打印件上。如何将此值中的值变为变量?而不是将它作为一行返回。我需要变量。
答案 0 :(得分:2)
如果我理解正确,您希望将SELECT
的结果存储到表格中。
要实现这一点,您首先尝试将值写入变量,然后在第二步中尝试将这些变量插入到带有INSERT
语句的表中。
最好尝试这种语法:
SELECT col1, col2, ... INTO #SomeTable FROM SomeWhere
INTO #SomeTable
将自动创建一个带有拟合结构的临时表,并将完整的结果插入到这个新创建的临时表中。
简单的SELECT * FROM #SomeTable
会带回结果。
答案 1 :(得分:0)
首先尝试声明printvariable并打印该值。
declare @ptext varchar(max)
select @ptext = 'Total money invoiced: ' + CONVERT(nvarchar, fmsTotalAmount) + '€ for this Relation'
print @ptext
select @ptext = 'Total money invoiced: ' + CONVERT(nvarchar, fmsTotalRelationAmount) + '€ in total'
print @ptext