SQL 中的业务流程可以为每个操作生成一个变量1-N 次调用存储过程,其目的是插入与主流程相关的数据。
如何从一个选择中执行多行生成的 sql,或者是否有一种从选择中调用存储过程的方法?
此步骤之前的流程是涉及到业务逻辑和数据驱动操作的操作,并且已经对相关的外键连接表进行了后续的插入操作。
在需要调用存储过程的那一刻,它已经准备好在表变量中处理数据。调用存储过程的步骤(过程中的逻辑)是一个涉及的过程,在存储过程中是有意义的,并且不能复制到现有过程中。
生成的代码的虚假示例Select
。
SELECT 'EXEC [sim].[ROI_Save] ' + CONVERT(varchar(6), VSL.PathId) + ', '
+ Convert(varchar(6), @ROIResultId) + ', '
+ CONVERT(varchar(6), RT.routeTypeResultId) + ', '
+ CONVERT(varchar(6), RT.ROI_RouteTypeId) + '; '
FROM @routeResultIds RT
JOIN sim.ROI_Result_Vehicle VSL ON RT.ROI_Result_VehicleId = VSL.ROI_Result_VehicleId
结果
是否连接结果并调用Exec
?
虽然我更喜欢使用强类型参数生成真正的动态 SQL 语句,但在这里连接可能没问题,因为正确的方法会更麻烦。但是,我总是更喜欢
sp_executesql
。EXEC()
我仍然不喜欢未命名过程的参数,并且如果您的任何参数值是字符串或日期,单引号的建立很快就会变得非常烦人。
选择到命令表中。然后在while循环中执行命令。
或者
将您的输入数据构建到一个表中,并使用带有参数的 sp_executesql 循环遍历它。