【问题标题】:I'm getting an error "Msg 8114, Level 16, State 5, Procedure sp_DRPL_MassChangeClient, Line 0 Error converting data type varchar to int."我收到错误消息“消息 8114,级别 16,状态 5,过程 sp_DRPL_MassChangeClient,第 0 行错误将数据类型 varchar 转换为 int。”
【发布时间】:2013-07-23 15:16:59
【问题描述】:

我已经检查了所有有问题的表,并且我已经正确声明了所有变量。

下面的代码调用了一个非常基本的存储过程,如果需要可以提供(我不确定如何在此处正确添加)

DECLARE @DebtorsDebtID AS uniqueidentifier
    DECLARE @OldClient AS varchar(15)
    DECLARE @ClientID AS varchar(15)
    DECLARE @UserName AS varchar(20)
    DECLARE @Rows AS int
    DECLARE @Count AS int
    DECLARE @ID AS int
    DECLARE @DebtID AS int
    SET @UserName = 'rhys.bartley'
    SET @OldClient = 'TMTEST'
    SET @ClientID = 'ECCOMMERCIAL'

    SELECT tblDebt.PK_DebtID INTO #tmp
    FROM tblDebt 
    WHERE tblDebt.PK_DebtID = 233101

    SELECT @Rows = @@ROWCOUNT, @Count = 0

    WHILE (@Count < @Rows)
    BEGIN
        SELECT TOP 1 @ID = PK_DebtID FROM #tmp
        SELECT @DebtorsDebtID = PK_DebtorsDebtID FROM tblDebtorsDebt where FK_DebtID = @ID

        EXEC sp_DRPL_MassChangeClient @DebtorsDebtID,@OldClient,@ClientID,@UserName,@DebtID

        DELETE #tmp WHERE PK_DebtID = @ID
            SELECT @Count = @Count + 1
    END

sp_DRPL_MassChangeClient

USE [BailiffDB]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[sp_DRPL_MassChangeClient]
  @DebtorsDebtID AS uniqueidentifier,
  @DebtID AS int,  
  @OldClient AS varchar(15),
  @ClientID AS varchar(15),
  @UserName AS varchar(20)


AS
BEGIN

  SET NOCOUNT ON;
  DECLARE @BatchNo int
  SET @BatchNo = 2457


  UPDATE tblArrangement SET FK_ClientID = @ClientID WHERE FK_DebtorsDebtID = @DebtorsDebtID
  UPDATE tblDebt SET FK_ClientID = @ClientID WHERE PK_DebtID = @DebtID
  UPDATE tblDebtorsDebt SET FK_ClientID = @ClientID WHERE PK_DebtorsDebtID = @DebtorsDebtID
  UPDATE tblLetterActivity SET FK_ClientID = @ClientID WHERE FK_DebtID = @DebtID
  UPDATE tblTransactions SET FK_ClientID = @ClientID WHERE FK_DebtID = @DebtID
  UPDATE tblTransactionsDistributed SET FK_ClientID = @ClientID WHERE FK_DebtID = @DebtID
  UPDATE tblTransactionsDistributed_Cancelled SET FK_ClientID = @ClientID WHERE FK_DebtID = @DebtID
  UPDATE tblTransactions_Cancelled SET FK_ClientID = @ClientID WHERE FK_DebtID = @DebtID
  UPDATE tblDebtLoad SET FK_ClientID = @ClientID WHERE PK_DebtID = @DebtID
  UPDATE tblBatchNo SET FK_ClientID = @ClientID WHERE PK_BatchNo = @BatchNo

END

【问题讨论】:

  • 您是否尝试自己缩小范围?
  • sp_DRPL_MassChangeClient 提供参数类型
  • @juergend 是的,我自己尝试缩小范围。我重新编辑了这个问题(以前从未在这里发布过),它会将 DECLARE 语句添加到下面的代码部分。
  • 欢迎使用 StackOverflow:如果您发布代码、XML 或数据示例,在文本编辑器中突出显示这些行并单击“代码示例”按钮 ({ } ) 在编辑器工具栏上以很好地格式化和语法突出显示它!
  • 好吧,我们需要看看sp_DRPL_MassChangeClient sp的代码,因为是那个程序抛出了错误

标签: sql sql-server int converter varchar


【解决方案1】:

这就是你的过去

EXEC sp_DRPL_MassChangeClient @DebtorsDebtID,@OldClient,@ClientID,@UserName,@DebtID

第二个@variable 是@OldClient,它被声明为varchar 到

  @DebtorsDebtID AS uniqueidentifier,
  @DebtID AS int, 

第二个变量是@DebtID 声明为 INT 因此抛出错误

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-01
    • 2023-03-05
    • 1970-01-01
    相关资源
    最近更新 更多