我的内联表函数基本上打印出数字,从1到函数输入的数字。由于我是SQL Server的新手,我不确定如何在函数内部实现while循环。我的实现如下。正如预期的那样,我在WHILE
,BEGIN
,THEN
处遇到了很多编译器错误。任何人都可以建议我如何改进代码。谢谢!
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)
答案 0 :(得分: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)