存储过程 - 将数据类型varchar转换为数字时出错

The*_*ook 1 sql sql-server stored-procedures sql-server-2008-r2

运行一个简单的存储过程时,我收到此错误,坦率地说,我不知道为什么.

消息8114,级别16,状态5,过程PROC_TEST,行15
错误将数据类型varchar转换为数字.

列:

  • SI_IDNUMERIC(19,0)
  • SI_COMPANYIDNUMERIC(19,0)
  • SI_LOGINIDVARCHAR(100)

知道为什么吗?

这是存储过程:

CREATE PROCEDURE [xxxxxx].[PROC_TEST] 
AS
BEGIN    
    SET NOCOUNT ON

    DECLARE
          @id NUMERIC(19,0),
          @login VARCHAR(100);

    DECLARE user_cursor CURSOR       <<----- Line 15
    FOR
       SELECT 
           SI_ID, SI_LOGINID 
       FROM SI_USER 
       WHERE SI_COMPANYID = 123

    OPEN user_cursor

    FETCH NEXT FROM user_cursor into @id, @login

    WHILE @@FETCH_STATUS = 0 
    BEGIN
          PRINT @id + ', ' + @login

          FETCH NEXT FROM user_cursor into @id, @login
    END

    CLOSE user_cursor
    DEALLOCATE user_cursor
END
Run Code Online (Sandbox Code Playgroud)

Eri*_*ric 7

SQL错误行引用不准确.错误似乎是这一行:PRINT @id + ', ' + @login

尝试 PRINT CONVERT(varchar, @id) + ', ' + @login