2014-10-28 50 views
0

我的内联表函数基本上输出数字,从1到输入到函数中的数字。由于我是SQL Server新手,我不确定如何在函数内部实现一个while循环。我的实现如下。正如我所料,我在WHILEBEGINTHEN得到了很多编译器错误。任何人都可以建议我如何改进代码。谢谢!在while循环中使用本地函数参数 - SQL Server

CREATE FUNCTION num_F(@nnn INT) 
RETURNS TABLE 
AS 
RETURN (SELECT CASE 
       WHEN @nnn = 0 
        THEN NULL 
        ELSE WHILE dbo.num_F(@nnn) > 0 
          BEGIN 
          THEN dbo.num_F(@nnn) 
          SET dbo.num_F(@nnn) = dbo.num_F(@nnn)-1 
         END 
         GO 
       END as First_Col 
     ORDER BY First_Col ASC)   

回答

1

最简单的方法是使用common table expression (CTE)

CREATE FUNCTION Numfunctn1 (@num INT) 
RETURNS TABLE 
AS 
    RETURN(
     WITH cte 
      AS (SELECT 1 id 
       UNION ALL 
       SELECT id + 1 
       FROM cte 
       WHERE id < @num) 
     SELECT * 
     FROM cte) 


SELECT * 
FROM Numfunctn1(10) 
+0

感谢,但这个是一个内联表函数?你可以帮助组建一个内联表格功能 – user3760741 2014-10-28 05:42:16

+0

@ user3760741检查现在 – 2014-10-28 05:52:26