sql-server - SQL Proc 'Conversion failed' 从 varchar 到 int。为什么转换?

标签 sql-server tsql procedure

我的问题是……为什么要从 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 行是一个空行。那里没有代码。

最佳答案

这是你的返回。存储过程返回一个整数来指示执行状态,而不是返回值。您需要选择 @Result 或将 @Result 作为输出参数。

关于sql-server - SQL Proc 'Conversion failed' 从 varchar 到 int。为什么转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54370363/

相关文章:

sql-server - 为什么我的 Azure SQL 数据库索引仍然碎片?

sql - SQL Server 中将多个数据更改压缩为前后值的最高效方法

sql-server - 来自多个 SQL 实例/服务器的行计数

sql-server-2008 - 快速更新插入 Sql server 2008 R2

mysql - 程序的多个结果集。如何只返回最后一个结果集?

hadoop - Hadoop中磁盘或数据节点故障以及恢复的过程是什么

sql-server - 如何在选择查询中不选择第三行

sql - 替换字符串中的字符而不影响名称

mysql - 在 MySQL 中编写一个过程,使用分隔符将列拆分为行

sql - 从字符串转换日期和/或时间时转换失败