gpt4 book ai didi

sql - TSQL - 表值函数中的 If..Else 语句 - 无法通过

转载 作者:太空狗 更新时间:2023-10-30 01:40:51 25 4
gpt4 key购买 nike

发帖之前看过几篇关于开发USD函数的文章,但是没有遇到解决我的问题的...如下:

我有一个非常简单的数据库,它存储篮球运动员并由 ID、年龄、高度和姓名列组成。我想做的是用一个参数@set varchar(10) 实现一个函数'height',根据一个@set 值将触发不同的选择语句

我试图实现的是伪代码:

CREATE FUNCTION [dbo].[age](@set varchar(10))
RETURNS TABLE
AS
BEGIN

IF (@set = 'tall')
SELECT * from player where height > 180

ELSE IF (@set = 'average')
SELECT * from player where height >= 155 and height <=175

ELSE IF (@set = 'low')
SELECT * from player where height < 155
END

谁能告诉我如何实现它?

最佳答案

你很接近。使用多语句表值函数需要在函数中指定和填充返回表:

CREATE FUNCTION [dbo].[age](@set varchar(10))
RETURNS @Players TABLE
(
-- Put the players table definition here
)
AS
BEGIN

IF (@set = 'tall')
INSERT INTO @Players SELECT * from player where height > 180

ELSE IF (@set = 'average')
INSERT INTO @Players SELECT * from player where height >= 155 and height <=175

ELSE IF (@set = 'low')
INSERT INTO @Players SELECT * from player where height < 155

RETURN -- @Players (variable only required for Scalar functions)

END

如 Richard 的回答所示,我建议使用内联 TVF。它可以从您的语句中推断出表返回。

另请注意,多语句和内联 TVF 确实非常不同。就优化器而言,内联 TVF 与其说是一个黑盒,不如说是一个参数化 View ,它能够在同一执行计划中与其他表和 View 一起重新排列内容。

关于sql - TSQL - 表值函数中的 If..Else 语句 - 无法通过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5544269/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com