2010-08-20 118 views
0

我的功能如何获得总行通过存储过程在SQL Server 2005

ALTER FUNCTION GetProductCount 
(@CatID int) 
RETURNS int 
AS 
BEGIN 

DECLARE @return_value int 

EXEC @return_value = [dbo].[USP_Products_GetList] 
     @ProductName = NULL, 
     @ProductID = NULL, 
     @Description = NULL, 
     @CatID = @CatID, 
     @CatName = NULL, 
     @Price1 = NULL, 
     @Price2 = NULL, 
     @SizeID = NULL, 
     @IsNew = NULL, 
     @InActive = NULL, 
     @SortBy = NULL, 
     @SortType = NULL 

return @return_value 
end 

功能执行

GetProductCount 1 

使用用户自定义功能的消息557,级别16返回,国家2,过程 GetProductCount,9行仅起到 和一些扩展存储过程 可以从 功能中执行。

问题

我想找到总没有。行 结果通过此功能是存储过程和回报。 我现在该做什么? 解决方案请.........

+0

你打算从哪里调用UDF? – 2010-08-20 22:17:19

+0

我还没有写查询还没有,而只是如果我执行功能,它提供了这样的语法执行的错误如图功能执行部以上 – 2010-08-20 22:20:17

回答

1

,除非您使用环回链接服务器查询破解,不推荐

+0

+1对于违背我的说法,这是不可能的! – 2010-08-20 21:48:32

+0

那我该怎么办? – 2010-08-20 21:51:07

+0

@SOF - 你可以发布你的存储过程代码吗? – 2010-08-20 21:54:14

0

我的存储过程,你不能从一个UDF做哪些根据类别返回行ID = 1

USE [StoreDB] 
GO 
/****** Object: StoredProcedure [dbo].[USP_Products_GetList] Script Date: 08/21/2010 03:01:32 ******/ 
SET ANSI_NULLS OFF 
GO 
SET QUOTED_IDENTIFIER OFF 
GO 

ALTER PROCEDURE [dbo].[USP_Products_GetList] 

@ProductName varchar(50), 
@ProductID varchar(50), 
@Description varchar(50), 
@CatID varchar(50), 
@CatName varchar(50), 
@Price1 int, 
@Price2 int, 
@SizeID int, 
@IsNew bit, 
@InActive bit, 
@SortBy varchar(50), 
@SortType varchar(50) 

AS 

SELECT ProductID, ProductName, Price Price, PriceID, [Description], Size, SizeID, IsNew, InActive, ISNULL(ImageName,'Nophoto.png') AS ImageName, ImageTitle 
FROM ( 
     SELECT DISTINCT Products.ProductID, ProductName, MAX(Price) Price, PriceID, [Description], Size, Sizes.SizeID, IsNew, InActive, ImageName, ImageTitle FROM (SELECT * FROM Products WHERE (@InActive is null or @InActive = InActive ) AND (@IsNew is null or @IsNew = IsNew)) Products 
      INNER JOIN ProductCategory 
       on Products.ProductID = ProductCategory.ProductID 
      LEFT OUTER JOIN (SELECT * FROM ProductImages 
          WHERE (@ProductID is null or ProductID like '%' + @ProductID + '%') AND Isthumb = 'true' 
         ) ProductImages 
       ON Products.ProductID = ProductImages.ProductID     
      INNER JOIN (
          SELECT CatID FROM Categories 
           WHERE 
            ((@CatID is null or @CatID = 0) or @CatID = CatID) and 
            (@CatName is null or CatName like '%' + @CatName + '%') 
         ) Categories 
       on ProductCategory.CatID = Categories.CatID   
      INNER JOIN ( 
          SELECT Prices.ProductID, Prices.Price, Prices.PriceID, Prices.SizeID FROM Prices 
           INNER JOIN (
            SELECT ProductID, MAX(Price) Price from Prices WHERE PriceID IN 
              (SELECT MAX(PriceID) FROM Prices 
              GROUP BY ProductID , SizeID) 
            GROUP BY ProductID) Prices_ 
           ON Prices.ProductID = Prices_.ProductID AND Prices.Price = Prices_.Price      
         ) as Prices 
       on Prices.ProductID = Products.ProductID 
       inner join Sizes 
       on Sizes.SizeID = Prices.SizeID 
     GROUP BY ProductName, Products.ProductID, Price, PriceID, [Description] ,Size, Sizes.SizeID, IsNew, InActive, ImageName, ImageTitle 
) AS OrderProduct WHERE 
        (@ProductName is null or ProductName like '%' + @ProductName + '%') and 
        (@ProductID is null or ProductID like '%' + @ProductID + '%') and 
        (@Description is null or [Description] like '%' + @Description + '%') and 
        ((@SizeID is null or @SizeID = 0)or SizeID = @SizeID) and 
        (@Price1 is null or Price between @Price1 AND @Price2) 
ORDER BY 
CASE @SortType 
    WHEN 'desc' THEN 
    CASE @SortBy   
     WHEN 'ProductName' THEN ProductName   
     END 
    END 
    DESC, 
CASE @SortType 
    WHEN 'desc' THEN 
    CASE @SortBy   
     WHEN 'ProductID' THEN ProductID 
     WHEN 'Price' THEN Price   
     END 
    END 
    DESC,  
CASE @SortType 
    WHEN 'asc' THEN 
    CASE @SortBy   
     WHEN 'ProductName' THEN ProductName   
     END 
    END 
    ASC, 
CASE @SortType 
    WHEN 'asc' THEN 
    CASE @SortBy   
     WHEN 'ProductID' THEN ProductID 
     WHEN 'Price' THEN Price   
     END 
    END 
    ASC