【问题标题】:Conversion failed when converting the varchar value '!AA24!' to data type int转换 varchar 值 '!AA24!' 时转换失败数据类型 int
【发布时间】:2021-02-22 13:44:15
【问题描述】:

我在执行包含负值的存储过程时收到此错误。有什么方法可以转换或重置列值来修复它?

转换 varchar 值 '!AA24!' 时转换失败数据类型为 int。

代码:

DECLARE @PartnerId VARCHAR(10) = 'ITS';
DECLARE @DASHBOARD_ID VARCHAR(20) = '-1'

DECLARE @AGENT_ID INT

SELECT @AGENT_ID = IdAgent 
FROM DGSDATA.dbo.AGENT WITH (NOLOCK) 
WHERE agent = @PartnerId

IF (@DASHBOARD_ID = '-1' OR @DASHBOARD_ID = '-2' OR @DASHBOARD_ID = '-3') 
    UPDATE [WAR_DB].[dbo].[WAR_DGS_CORE_USER] 
    SET PrimaryLayoutType = @DASHBOARD_ID 
    WHERE @AGENT_ID = USER_ID

UPDATE [dbo].[WAR_GLOBAL_DASHBOARD]  
SET IS_PRIMARY_DASHBOARD = 0 
WHERE @AGENT_ID = AGENT_ID AND IS_PRIMARY_DASHBOARD = 1

【问题讨论】:

  • (1) 用您正在使用的数据库标记问题。 (2) 您应该能够更好地准确隔离错误发生的位置。
  • 是一个sql server

标签: sql sql-server tsql stored-procedures type-conversion


【解决方案1】:

很难说出确切的转换问题发生在哪里,但我怀疑IdAgent 确实是一个字符串。所以我会从改变开始:

DECLARE @AGENT_ID VARCHAR(255);  -- use the actual type of the agent

SELECT @AGENT_ID = IdAgent 
FROM DGSDATA.dbo.AGENT 
WHERE agent = @PartnerId;

【讨论】:

    猜你喜欢
    • 2020-06-25
    • 2011-12-01
    • 2012-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多