首页 > 解决方案 > 函数内的 SQL IF

问题描述

ALTER FUNCTION [dbo].[FSmapping] (
    @runID as bigInt,
    @TypMap as char(1)
    )

RETURNS TABLE
AS
RETURN


IF (@TypMap ='C')
BEGIN
SELECT b.[A/C],g.accountNumber, b.[Process], g.[endingBalanceLC], g.beginningBalanceLC
FROM table1 g
LEFT JOIN  table2  b ON b.[Acc2]=g.Account_Synt
where RunID = @runID
END

我正在尝试在 SQL 中实现一个表函数。基本上它应该还有3个IFs,唯一要切换的是table2,来自table2-4,基于输入CIR S。错误是IF语句,我知道缺少一些东西,我很难实现一些一种以表为返回值的开关函数。Select 在没有 IF 语法的情况下可以完美运行,它还会在 IF 内的两个变量上显示错误

必须声明标量变量 runID 和 TypMap

标签: sqlsql-serverfunctiontsqlif-statement

解决方案


如果 TypMap 不来 C,函数会返回什么?

我想你需要'ELSE'。

IF Boolean_expression
BEGIN
    -- Statement block executes when the Boolean expression is TRUE
END
ELSE
BEGIN
    -- Statement block executes when the Boolean expression is FALSE
END

推荐阅读