Проблемы с запуском хранимой процедуры через SQL-скрипт, который работал до тех пор, пока я не изменил один из параметров с Varchar на Int

0

Я надеюсь, что кто-то может мне помочь здесь, у меня есть таблица, в которой есть имя хранимой процедуры, которую я хотел бы запустить, у нее также есть параметр, который я хотел бы пройти в хранимую процедуру.

declare @RowCnt int
declare @MaxRows int
declare @ExecSql nvarchar(255)

select @RowCnt = 1

Эти следующие две строки относятся к исходной таблице или запросу

Я создаю временную таблицу, в которой есть только то, что мне нужно

declare @Import table (
rownum int IDENTITY (1, 1) 
Primary key NOT NULL , 
LOB_ID int, 
LOB_Level varchar(25), 
LOB_WS varchar(50)
)

insert into @Import (LOB_ID,LOB_Level,LOB_WS) 

SELECT     LOB_ID, LOB_BODLevel, LOB_Parameters
FROM         view_LOB_Update_Mappings

select @MaxRows=count(*) from @Import

Теперь я хочу запустить временную таблицу, проходящую через переменные имени хранимой процедуры LOB_Level

LOB_ID → это был Varchar, но мне пришлось менять и с тех пор, как этот код больше не работает

LOB_WS - что является вторым параметром

while @RowCnt <= @MaxRows
begin

    select @ExecSql = 'exec ' + LOB_Level + ' ' + LOB_ID + ',' +  ' ''' + LOB_WS + '''' from @Import where rownum = @RowCnt 
    execute sp_executesql @ExecSql

   Select @RowCnt = @RowCnt + 1

end

Сообщение об ошибке, которое я получаю:

Msg 245, Level 16, State 1, Line 25
Syntax error converting the varchar value 'exec Update_LOB_Mappings_L35 ' to a column of data type int.

Любая помощь, которую вы можете предоставить, будет с благодарностью!

Джон

Теги:
stored-procedures

1 ответ

1
Лучший ответ

Я думаю, вам нужно преобразовать LOB_ID в строку, прежде чем пытаться использовать ее в строке 25. В mysql это может быть CONVERT(LOB_ID, CHAR(8))

  • 0
    Я использовал CAST (LOB_ID как varchar (8)), и это похоже на работу. Большое спасибо, вы действительно спасли меня !!!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню