aba*_*hev 38 sql t-sql sql-server sql-server-2008
我需要将我的T-SQL存储过程(MS SQL 2008)控制流分支到多个方向:
CREATE PROCEDURE [fooBar]
@inputParam INT
AS
BEGIN
IF @inputParam = 1
BEGIN
...
END
ELSE IF @inputParam = 3
BEGIN
...
END
ELSE IF @inputParam = 3
BEGIN
...
END
END
Run Code Online (Sandbox Code Playgroud)
还有其他方法吗?例如,在C#我shoud使用switch-case块.
Phi*_*ley 38
如果... ELSE ...就像我们在T-SQL中得到的那样.没有像结构化编程的CASE语句.如果你有一套扩展的......如果要处理,请确保为每个块包含BEGIN ... END以保持清晰,并且始终记住,一致的缩进是你的朋友!
小智 17
您也可以尝试以SELECT CASE声明的形式表达您的答案.然后,您可以稍后创建简单的,如果需要,可以使用您的结果,因为您已经缩小了可能性.
SELECT @Result =
CASE @inputParam
WHEN 1 THEN 1
WHEN 2 THEN 2
WHEN 3 THEN 1
ELSE 4
END
IF @Result = 1
BEGIN
...
END
IF @Result = 2
BEGIN
....
END
IF @Result = 4
BEGIN
//Error handling code
END
Run Code Online (Sandbox Code Playgroud)
Stu*_*rth 11
不,但在存储过程中使用IF ... ELSE ... END IF时应该小心.如果您的代码块完全不同,您可能会遇到性能不佳的原因,因为每次都需要重新缓存过程计划.如果它是一个高性能的系统,你可能想单独编译存储的特效每个代码块,并让应用程序决定在适当的时候调用哪个PROC.
| 归档时间: |
|
| 查看次数: |
109177 次 |
| 最近记录: |