Здравствуйте, я делаю хранимую процедуру, и у меня возникает проблема с выводом кода с печатью, потому что позже мне нужно записать переменные в базу данных temp. Это код:Сохраненная процедура получить данные из запроса SET-based
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
Теперь я хочу, чтобы напечатать вывод этой ЗЕЬЕСТ. Но когда я это сделать:
print 'Total money invoiced: ' + CONVERT(nvarchar, fmsTotalAmount) + '€ for this Relation' print 'Total money invoiced: ' + CONVERT(nvarchar, fmsTotalRelationAmount) + '€ in total'
Но тогда я получаю следующее сообщение об ошибке:
The name "fmsTotalAmount" is not permitted in this context. Valid expressions are constants, constant expressions, and (in some contexts) variables. Column names are not permitted.
The name "fmsTotalRelationAmount" is not permitted in this context. Valid expressions are constants, constant expressions, and (in some contexts) variables. Column names are not permitted.
На отпечатках. Как получить значения из этой переменной? Вместо этого он возвращает его как строку. Мне нужны переменные.
OT: [прочитать о * дурной привычке пинать *: объявление (N) VARCHAR без длины] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/bad-habits- to-kick-declaring-varchar-without-length.aspx) – Shnugo
Я не понимаю вашу цель: если вы просто ** читаете ** данные, почему вы создаете * хранимую процедуру * (что подразумевается ** для выполнения * * что нибудь)? Что случилось с рядом? Что лучше с * переменными * (особенно когда заголовок содержит * set-based *)? Пожалуйста, предоставьте более подробную информацию! – Shnugo
Процедура больше, чем это. И он читает гораздо больше данных, чем только это. И затем он записывает его в базу данных –