SQL Server - Сравнение BIGINT с VARCHAR в запросе - PullRequest
0 голосов
/ 07 ноября 2019

у меня 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'

Как я могу подойти к этому под другим углом, так как я 'Последние несколько часов я бьюсь головой об этом, и логика кажется довольно простой.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...