Sql server 使用条件计算创建函数
我试图在Sql server 使用条件计算创建函数,sql-server,tsql,Sql Server,Tsql,我试图在RETURN语句之前创建一个带有条件计算的函数,但SSMS指出的“BEGIN IF@param2 is NULL”附近有一个不正确的语法,我无法找出这段代码的错误: CREATE FUNCTION ConditionalFunction ( @input1 VARCHAR(20), @input2 VARCHAR(20) ) RETURNS TABLE AS BEGIN IF @input2 IS NULL BEGIN SET @input
RETURN
语句之前创建一个带有条件计算的函数,但SSMS指出的“BEGIN IF@param2 is NULL”
附近有一个不正确的语法,我无法找出这段代码的错误:
CREATE FUNCTION ConditionalFunction
(
@input1 VARCHAR(20),
@input2 VARCHAR(20)
)
RETURNS TABLE
AS BEGIN
IF @input2 IS NULL
BEGIN
SET @input2 = field
FROM table1
WHERE filter = @input1
END
RETURN
(
SELECT field1, field2
FROM table2
WHERE filter1 = @input1
AND filter2 = @input2
)
END
我的目标是能够称之为
ConditionalFunction('Foo',NULL)
或
在某种程度上,第一次调用将使它基于@input1
检测@input2
的默认值
我基于。这是SQL Server 13。你能告诉我我能做些什么来编译它吗
注意:我显然用泛型替换了实名,但代码结构保持不变试试这个,但将
@Data
表类型更改为您的数据类型:
CREATE FUNCTION ConditionalFunction
(
@input1 VARCHAR(20),
@input2 VARCHAR(20)
)
RETURNS @Data TABLE
(
field1 VARCHAR(12)
,field2 VARCHAR(12)
)
AS
BEGIN
IF @input2 IS NULL
BEGIN
SET @input2 = field
FROM table1
WHERE filter = @input1
END
INSERT INTO @Data
SELECT field1, field2
FROM table2
WHERE filter1 = @input1
AND filter2 = @input2
RETURN;
END
SQL中有几种类型的函数:
- 标量只返回一个值
- 内联-返回一个表(类似于带参数的视图)
- 表值-返回一个表
您的语法看起来需要一个内联函数,但应该只包含一个返回数据的
SELECT
语句。因此,您需要创建一个表值函数。尝试此操作,但将@Data
表类型更改为您的数据类型:
CREATE FUNCTION ConditionalFunction
(
@input1 VARCHAR(20),
@input2 VARCHAR(20)
)
RETURNS @Data TABLE
(
field1 VARCHAR(12)
,field2 VARCHAR(12)
)
AS
BEGIN
IF @input2 IS NULL
BEGIN
SET @input2 = field
FROM table1
WHERE filter = @input1
END
INSERT INTO @Data
SELECT field1, field2
FROM table2
WHERE filter1 = @input1
AND filter2 = @input2
RETURN;
END
SQL中有几种类型的函数:
- 标量只返回一个值
- 内联-返回一个表(类似于带参数的视图)
- 表值-返回一个表
SELECT
语句。因此,您需要创建一个表值函数