Sql server 如何执行对象名存储在变量中的存储过程
我有一个表,其中包含一列与每个元组关联的存储过程。我有一个Sql server 如何执行对象名存储在变量中的存储过程,sql-server,stored-procedures,ssis,Sql Server,Stored Procedures,Ssis,我有一个表,其中包含一列与每个元组关联的存储过程。我有一个executesql任务,它为所需的元组选择过程并将其存储在变量中。然后我将其连接到另一个executesql任务,该任务使用语句EXEC?,并将变量映射为参数。但无法执行,显示错误: 在此上下文中无法推断参数“@P1”的类型 这是变量的外观: @[User::ProcedureName] = "dbo.TestProcedure" 获取过程名称的执行SQL任务 SELECT ProcedureName FROM Table WHERE
executesql任务
,它为所需的元组选择过程并将其存储在变量中。然后我将其连接到另一个executesql任务
,该任务使用语句EXEC?
,并将变量映射为参数。但无法执行,显示错误:
在此上下文中无法推断参数“@P1”的类型
这是变量的外观:
@[User::ProcedureName] = "dbo.TestProcedure"
获取过程名称的执行SQL任务
SELECT ProcedureName FROM Table WHERE ProcedureID = 1
结果输入@[User::ProcedureName]
执行过程的executesql任务
EXEC ?
使用@[User::ProcedureName]作为参数
有办法吗?在
@ProcedureName
的值中添加“EXEC”,使该值变为“EXEC dbo.TestProcedure”,并在执行SQL任务中选择“变量”选项,并使用@ProcedureName
变量作为源。Exec
不支持变量中的过程名称。如果省略括号,这就是它的解释方式
如果将SQL更改为
DECLARE @Proc NVARCHAR(250) = ?
EXEC @Proc
它应该工作正常,并且不需要SQL注入。Duh!谢谢我需要添加一个CASE语句,因为不是所有条目都是过程,我们有一个列用于标识类型