2015-05-05 2 views
1

При запуске простой хранимой процедуры я получаю эту ошибку и, честно говоря, я не знаю почему.Сохраненная процедура - Ошибка преобразования типа данных varchar в числовой

Msg 8114, Level 16, State 5, процедура PROC_TEST, линия 15
Ошибка преобразования типа данных VARCHAR в числовой.

Колонны:

  • SI_ID является NUMERIC(19,0)
  • SI_COMPANYID является NUMERIC(19,0)
  • SI_LOGINID является VARCHAR(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 
+0

Что такое тип столбца 'SI_COMPANYID'? – Parado

+0

@Parado SI_COMPANYID - ЧИСЛЕННЫЙ (19,0) – TheEwook

ответ

7

SQL исходная линия ошибка неточными. ошибка, кажется, эта строка: PRINT @id + ', ' + @login

Попробуйте PRINT CONVERT(varchar, @id) + ', ' + @login

+0

Большое спасибо, это была действительно проблема. Не могу поверить, что я потратил несколько часов на такую ​​глупую вещь, как это только потому, что Microsoft не может предоставить точное сообщение об ошибке. Спасибо в любом случае;) – TheEwook

+0

@Parado, не волнуйтесь, я всегда принимаю ответ. Просто подождите еще 3 минуты, чтобы принять его (не можете сделать это прямо сейчас, система не позволяет принимать ответы слишком быстро) – TheEwook

Смежные вопросы