Запрос хранимой процедуры SQL Server для возврата нескольких столбцов - PullRequest
0 голосов
/ 15 апреля 2019

Следующий запрос возвращает 4 столбца, но если я пытаюсь вернуть то же самое из хранимой процедуры, я получаю

В списке выбора можно указать только одно выражение, если подзапрос не введен с EXISTS

Если я хочу получить значения, возвращаемые в строке через запятую, как мне это записать?

Рабочий запрос

Declare @g geography = 'POINT(-1.2846387 52.686091)'  

Select top 1 
    Round(Geocolumn.STDistance(@g)/1000, 2) as DistanceInKlms,
    Registration, location, dateoffix  
from 
    Positions  
where
    Geocolumn.STDistance(@g) is not null
    and Registration = 'DX17AAF'
order by
    Geocolumn.STDistance(@g);

Храмы хранимых процедур из-за нескольких столбцов:

select @return =    (Select Top(1)
          Round(GeographyPositon.STDistance(@g)/1000, 2) as DistanceInKlms,
          Registration, [location], dateoffix  
from Positions 
WHERE   Registration = @Registration
ORDER BY GeographyPositon.STDistance(@g))

Ответы [ 2 ]

0 голосов
/ 15 апреля 2019

Попробуйте ниже, чтобы получить все 4 значения столбца в одной строке.

select @return =    ( Select Top(1)
          CAST(Round(GeographyPositon.STDistance(@g)/1000, 2) AS VARCHAR)+', '
          CAST(Registration AS VARCHAR)+', '+ CAST([location] AS VARCHAR) +', '+ CAST(dateoffix AS VARCHAR)
from Positions 
WHERE   Registration = @Registration
ORDER BY GeographyPositon.STDistance(@g) )
0 голосов
/ 15 апреля 2019

тебе это нужно?

select @return =    (Select Top(1)
          Round(GeographyPositon.STDistance(@g)/1000, 2)+' , '
          Registration+' , '+ [location] +' , '+ dateoffix  
from Positions 
WHERE   Registration = @Registration
ORDER BY GeographyPositon.STDistance(@g)
...