刚学用户自定义函数的内容 写了个代码总是找不到错误原因 还请高手指点下CREATE FUNCTION fnProductListByCategory (@SubCategoryID Int = null)
RETURNS Table
AS
BEGIN
IF @SubCategoryID is null
  BEGIN
   RETURN
    (
    select ProductID,Name,ListPrice
    from Product
    )
  END
ELSE
  BEGIN
   RETURN
    (
    select ProductID,Name,ListPrice
    from Product
    where ProductSubCategoryID = @SubCategoryID
    )
  END
END----------------------------------------------------------------
消息 178,级别 15,状态 1,过程 fnProductListByCategory,第 7 行
在此上下文中不能使用带有返回值的 RETURN 语句。
消息 178,级别 15,状态 1,过程 fnProductListByCategory,第 15 行
在此上下文中不能使用带有返回值的 RETURN 语句。
消息 102,级别 15,状态 31,过程 fnProductListByCategory,第 22 行
'BEGIN' 附近有语法错误。

解决方案 »

  1.   

    CREATE FUNCTION fnProductListByCategory (@SubCategoryID Int = null) 
      RETURNS @t Table(ProductID int,Name varchar(20),ListPrice decimal(18,2)) 
    AS 
    BEGIN 
    IF @SubCategoryID is null 
      BEGIN 
        insert @t 
        select ProductID,Name,ListPrice 
        from Product 
      END 
    ELSE 
      BEGIN 
        insert @t
        select ProductID,Name,ListPrice 
        from Product 
        where ProductSubCategoryID = @SubCategoryID 
      END 
      
      return
    END go