SQL Proc 'Conversion failed' 从 varchar 到 int。为什么转换?
SQL Proc 'Conversion failed' from varchar to int. Why the conversion?
我的问题是...为什么要从 varchar 转换为 int?我不确定它要做什么
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 行是一个空行。那里没有代码。
是你的RETURN。存储过程 return 一个表示执行状态的整数,而不是 return 值。您可能需要 Select @Result 或将 @Result 作为输出参数。
我的问题是...为什么要从 varchar 转换为 int?我不确定它要做什么
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 行是一个空行。那里没有代码。
是你的RETURN。存储过程 return 一个表示执行状态的整数,而不是 return 值。您可能需要 Select @Result 或将 @Result 作为输出参数。