SQL Proc «Сбой преобразования» из varchar в int. Почему преобразование? - PullRequest
0 голосов
/ 25 января 2019

Мой вопрос здесь был бы ... Почему он конвертируется в int из varchar? Я не уверен, что он пытается сделать

CREATE PROCEDURE #myTestProcedure 
(
    @TransId VARCHAR(15)
) 
AS
BEGIN
    DECLARE @Result VARCHAR(15);

WITH TestCTE (TransId, AdjRefTransId) AS
(
    SELECT TRANSID, ADJREFTRANSID
    FROM dbo.MyTable
    WHERE TRANSID = @TransId

    UNION ALL

    SELECT pet.TRANSID, pet.ADJREFTRANSID
    FROM dbo.MyTable AS pet
    JOIN TestCTE
        ON TestCTE.ADJREFTRANSID = pet.TRANSID
)

SELECT @Result = 
(
    SELECT MAX(MyResult)
    FROM dbo.MyOtherTable
    WHERE TRANSID = TestCTE.TRANSID
)        
FROM TestCTE
WHERE TestCTE.ADJREFTRANSID = ''

RETURN @Result
END

EXEC dbo.#myTestProcedure @TransId = 'MyTransId'

Ошибка:

Msg 245, Level 16, State 1, Procedure #myTestProcedure  0004C61A, Line 32
Conversion failed when converting the varchar value 'MyResult' to data type int.

Я не вижу, где он пытается сделать это преобразование. Строка 32 - пустая строка. Там нет кода.

1 Ответ

0 голосов
/ 25 января 2019

Это ваш возврат. Хранимые процедуры возвращают целое число, чтобы указать состояние выполнения, а не возвращаемые значения. Вам необходимо либо выбрать @Result, либо @Result быть выходным параметром.

...