mysql - 通过 SQL 脚本运行存储过程时出现问题,以前一直有效,直到我将其中一个参数从 Varchar 更改为 Int

标签 mysql stored-procedures

我希望有人可以在这里帮助我,我有一个表,其中包含我想要运行的存储过程的名称,它还有一个我想要传递到存储过程的参数。

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.

如果您能提供任何帮助,我们将不胜感激!

约翰

最佳答案

我认为您需要先将 LOB_ID 转换为字符串,然后再尝试在第 25 行使用它。在 mysql 中,这可能是 CONVERT(LOB_ID, CHAR(8))

关于mysql - 通过 SQL 脚本运行存储过程时出现问题,以前一直有效,直到我将其中一个参数从 Varchar 更改为 Int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1889084/

相关文章:

mysql - 即使其中一项操作失败,事务也不会失败

MySQL错误2013超时

带有预准备语句的 MySQL 存储过程不起作用

sql - 交易重复错误

php - 存储过程不适用于 PHP 调用

mysql - mysql插入语句执行proc出错

mysql - 在 "GROUP BY"子句中重用 select 表达式的结果?

mysql - SELECT 查询使用可选的用户提供的参数过滤记录

javascript - 如何使javascript中的排序函数表现得像mysql order by

Oracle:搜索所有存储的过程/触发器/其他数据库代码?