【发布时间】:2014-12-01 05:39:06
【问题描述】:
我有一个带有Case When 子句的Insert Into Select 语句。我想在When 语句中执行一个存储过程。
Insert into Orders(id, custId, custIntake)
Select id, custId custIntake =
Case
When ( Exec mySProc(custId) = 1 ) = 'InStore'
When ( Exec mySProc(custId) = 0 ) = 'OutsideStore'
Else null
End
From OrdersImport
如何在Case When 中运行Exec mySProc(custId)?
【问题讨论】:
-
就我个人而言,我可能会将其作为函数而不是存储过程运行。除非有理由需要将此作为存储过程。或者,您是否可以在执行插入之前不计算存储过程值,例如传递一个已计算值的变量,除非您一次执行多个插入。
-
在 INSERT/SELECT 之外执行 SP,将输出存储在输出参数变量中并在 WHEN 中使用
-
@YuriyGalanter 我需要在插入时从选择中获取动态 ID。 CustId 将是动态的并传递到存储过程中。我已将问题更新为更准确。
-
你不能那样做。存储过程是做什么的?可以写成标量 UDF 吗?还是最好完全内联?
-
用函数代替过程
标签: sql sql-server tsql stored-procedures case-when