у меня 2 запроса;1, я запускаю вручную, который возвращает 5 лучших проектов, другой является хранимой процедурой, которая выполняется и передает результирующий набор из исходного запроса в качестве строкового параметра как часть его предложения.
I'mполучаю очевидную ошибку, говорящую мне, что я не могу сравнить BIGINT с VARCHAR (что имеет смысл, так как я передаю строку, построенную из моего набора результатов с идентификаторами проекта, я хочу, чтобы она возвращалась в хранимой процедуре), но для жизния, не могу придумать способ обойти это.
Ошибка:
Ошибка преобразования типа данных varchar в bigint
Запрос:
DECLARE @Projects AS VARCHAR(MAX)
SET @Projects = (SELECT '''' + SUBSTRING((SELECT TOP 5 ''',' + '''' + CAST(Project_ID AS VARCHAR) AS 'data()'
FROM Project
WHERE ISNULL(Imported, 0) = 0
FOR XML PATH('')), 4 , 9999) + '''')
SELECT @Projects
EXEC TestSP @values = @Projects
Хранимая процедура:
ALTER PROCEDURE [dbo].[TestSP]
@values AS VARCHAR(MAX)
AS
BEGIN
SET NOCOUNT ON;
SELECT Project
FROM Budget
WHERE Budget.Project IN (@values)
END
Результирующий набор, который я получаю из своего запроса:
'5863 ','5875 ','5892 ','5899 ','5955'
Как я могу подойти к этому под другим углом, так как я 'Последние несколько часов я бьюсь головой об этом, и логика кажется довольно простой.
Спасибо