sql - 如何创建多语句表值函数

标签 sql sql-server-2008 function

我有一个 SQL 函数,我想返回一个表,但出现错误: 在此上下文中不能使用带有返回值的 RETURN 语句

这是我的查询:

 ALTER FUNCTION [dbo].[Fnc_GetParentCategories]-- 21
  ( 
@catId int
  )
   Returns table

As
 Begin

Declare @Table table(Id int identity(1,1),Category_Id int,ParentId int);
declare @cid int;
 WITH  x AS (              
 SELECT a.Category_Id, a.ParentId               
 FROM   t_Category a              
 WHERE a.Category_Id=@CatId -- enter dead node walking here              

 UNION  ALL              
 SELECT b.Category_Id, b.ParentId              
 FROM   t_Category b              
 JOIN x   ON x.Category_Id  =b.ParentId            
  )             

  insert into @Table select * from x;

 return @Table 

end

错误是:

A RETURN statement with a return value cannot be used in this context

最佳答案

您的查询不正确:

ALTER FUNCTION [dbo].[Fnc_GetParentCategories]-- 21
(
    @catId int
)
Returns @Table table
(
    Id int identity(1,1),
    Category_Id int,
    ParentId int
)
AS
    Begin

    WITH  x AS
    (
         SELECT a.Category_Id, a.ParentId
         FROM   t_Category a
         WHERE a.Category_Id=@CatId -- enter dead node walking here

         UNION  ALL

         SELECT b.Category_Id, b.ParentId
         FROM   t_Category b
         JOIN x   ON x.Category_Id  =b.ParentId
    )

    insert into @Table select * from x;

    return

end

您在as之前声明表定义

关于sql - 如何创建多语句表值函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17163448/

相关文章:

sql-server-2008 - DateDiff年转换为小数

c - 打印最后 -n 行输入

php - 编辑 php mysqli CRUD 失败 - 仅更新数据 mysql 失败

mysql - 如何在 MySQL 中的查找和替换中指示列值的结尾

php - mysql在多个表中检索数据

php - 配置 PHP 5.3 以与 MS SQL Server 一起使用

mysql - Sql查询选择table1的sum和table2的sum并相减

c# - 如何在 linq c# 中编写下面的 sql 查询,其中某些参数有时会为 null

javascript - 如果我页面上的 Div Id 不起作用,则函数重定向

javascript - 需要澄清 JS 闭包和作用域链