用户定义的带有CASE语句的函数

立柱

我是SQL Server的新手。在这里,我尝试使用CASE语句创建UDF,以根据输入的各种订单日期从数据库STRDAT获取订单状态。这是代码:

USE STRDAT
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

IF OBJECT_ID(N'dbo.GetOrderStatus', N'FN') IS NOT NULL
    DROP FUNCTION dbo.GetOrderStatus ;
GO

CREATE FUNCTION dbo.GetOrderStatus(@lngOrderID int)
RETURNS varchar(50)
AS
BEGIN
    WITH MyData AS  
        (
        SELECT 
            ReservedDate AS Res,
            ConfirmedDate AS Conf,
            ProcessedDate AS Procs,
            ProducedDate AS Prod,
            ShippedDate AS Ship,
            RefusingReason AS Refs,
            CancelledDate AS Canc
        FROM tbl_Order 
        WHERE OrderID = @lngOrderID
        )

        SELECT GetOrderStatus= CASE
            WHEN res IS NULL AND conf IS NULL AND PROCS IS NULL AND PROD IS NULL AND Ship IS NULL AND Canc IS NULL AND Refs is null
            THEN 'Naujas'

            WHEN NOT Canc IS NULL
            THEN 'Atšauktas'

            WHEN NOT Refs IS NULL
            THEN 'Atmestas'

            WHEN NOT Ship IS NULL
            THEN 'Atkrautas'

            WHEN NOT prod IS NULL
            THEN 'Pagamintas'

            WHEN NOT Procs IS NULL
            THEN 'Apdirbtas'        

            WHEN NOT Conf IS NULL
            THEN 'Patvirtintas'

            ELSE 'N/A'
            END
        FROM MyData     
    END

这是我的第一个功能,我无法弄清楚为什么会在网上出现错误CREATE FUNTION ...

函数中包含的Select语句无法将数据返回给客户端。

波希米亚风格
  1. 添加RETURN关键字
  2. 将查询括在方括号中
  3. 消除 GetOrderStatus=

试试这个:

RETURN (WITH MyData AS
      ...
      SELECT CASE
      ...
      FROM mydata);

顺便说一句:

WHEN res IS NULL AND conf IS NULL AND PROCS IS NULL AND PROD IS NULL AND Ship IS NULL AND Canc IS NULL AND Refs is null

可以更优雅地表示为:

WHEN COALESCE(res, conf, PROCS, PROD, Ship, Canc, Refs) IS NULL

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

带有OR的SQL CASE语句?

来自分类Dev

有没有一种方法可以在bash脚本中的awk语句中定义用户定义的函数?

来自分类Dev

带有SUM CASE语句的SQL GROUP BY

来自分类Dev

Java调用带有预定义语句的用户定义表功能DB2

来自分类Dev

带有模板的用户定义运算符未调用隐式构造函数

来自分类Dev

默认(用户定义)构造函数和带有默认参数的构造函数之间的区别?

来自分类Dev

结合使用带有用户定义函数的predict.glm

来自分类Dev

带有IF语句的Excel ISNUMBER函数

来自分类Dev

选择带有CASE语句的数据

来自分类Dev

用户定义的带有参数的函数

来自分类Dev

在带有用户输入的where语句中使用Case

来自分类Dev

带有SUM(CASE)的SQL聚合函数

来自分类Dev

带有CASE的MySQL INSERT INTO SELECT语句

来自分类Dev

使用带有if语句的Environ函数

来自分类Dev

带有NULL的SQL CASE语句

来自分类Dev

Java调用带有预定义语句的用户定义表功能DB2

来自分类Dev

带有if语句的Postgresql函数

来自分类Dev

带有ddply函数的if语句

来自分类Dev

带有IF语句的Excel ISNUMBER函数

来自分类Dev

带有分组依据的 sql case 语句 IN

来自分类Dev

使用带有用户定义函数的 Rcpp/Armadillo 和 openMP 并行时出现段错误

来自分类Dev

php - 带有 case + if 的函数错误

来自分类Dev

用户定义函数只能有选择语句

来自分类Dev

带有 XMLSERIALIZE 的用户定义函数

来自分类Dev

字符串拆分或其他类似的带有 case 语句的 SQL Server 函数

来自分类Dev

如何在python的groupby函数中使用带有两个参数的用户定义函数

来自分类Dev

带有用户输入的 Switch 语句

来自分类Dev

带有 dplyr 动词的函数中的 if 语句

来自分类Dev

带有 For 循环返回“#VALUE!”的用户定义函数 错误

Related 相关文章

  1. 1

    带有OR的SQL CASE语句?

  2. 2

    有没有一种方法可以在bash脚本中的awk语句中定义用户定义的函数?

  3. 3

    带有SUM CASE语句的SQL GROUP BY

  4. 4

    Java调用带有预定义语句的用户定义表功能DB2

  5. 5

    带有模板的用户定义运算符未调用隐式构造函数

  6. 6

    默认(用户定义)构造函数和带有默认参数的构造函数之间的区别?

  7. 7

    结合使用带有用户定义函数的predict.glm

  8. 8

    带有IF语句的Excel ISNUMBER函数

  9. 9

    选择带有CASE语句的数据

  10. 10

    用户定义的带有参数的函数

  11. 11

    在带有用户输入的where语句中使用Case

  12. 12

    带有SUM(CASE)的SQL聚合函数

  13. 13

    带有CASE的MySQL INSERT INTO SELECT语句

  14. 14

    使用带有if语句的Environ函数

  15. 15

    带有NULL的SQL CASE语句

  16. 16

    Java调用带有预定义语句的用户定义表功能DB2

  17. 17

    带有if语句的Postgresql函数

  18. 18

    带有ddply函数的if语句

  19. 19

    带有IF语句的Excel ISNUMBER函数

  20. 20

    带有分组依据的 sql case 语句 IN

  21. 21

    使用带有用户定义函数的 Rcpp/Armadillo 和 openMP 并行时出现段错误

  22. 22

    php - 带有 case + if 的函数错误

  23. 23

    用户定义函数只能有选择语句

  24. 24

    带有 XMLSERIALIZE 的用户定义函数

  25. 25

    字符串拆分或其他类似的带有 case 语句的 SQL Server 函数

  26. 26

    如何在python的groupby函数中使用带有两个参数的用户定义函数

  27. 27

    带有用户输入的 Switch 语句

  28. 28

    带有 dplyr 动词的函数中的 if 语句

  29. 29

    带有 For 循环返回“#VALUE!”的用户定义函数 错误

热门标签

归档