如何使用存储过程在select语句中填充值?

时间:2012-05-25 16:31:30

标签: sql reporting-services sql-server-2000 ssrs-2008

前驱:我必须使用存储过程,我正在使用SQL Server 2000.我还需要吐出一个表,以便Reporting Services可以正确使用它。我可以创建任何数据库对象来帮助获取数据。

所以,这是我的select语句的一个例子(我希望我看起来和我实际使用的一样)

SELECT     
    Store.Store_ID, 
    Store.Store_Description, 
    Salaries.Income, 
    Salaries.Tax_Rate, 
    Managers.Manager_Name, 
    Employees.Employee_ID

FROM         
    Store INNER JOIN
    Managers ON Managers.Store_ID = Store.Store_ID INNER JOIN
    Employees ON Managers.Manager_ID = Employees.Manager_ID INNER JOIN
    Salaries ON Employees.Salary_Type_ID = Salaries.Salary_Type_ID 
WHERE (Store.Store_ID = 20561) 
ORDER BY Employee_ID

编辑:由于该过程返回单个值,我想要做的就是:

SELECT     
    Store.Store_ID, 
    Store.Store_Description, 
    Salaries.Income, 
    Salaries.Tax_Rate, 
    Managers.Manager_Name, 
    Employees.Employee_ID,
    Exec proc_Get_Emplyee_estimation_Costs Employee_ID    
FROM         
    Store INNER JOIN
    Managers ON Managers.Store_ID = Store.Store_ID INNER JOIN
    Employees ON Managers.Manager_ID = Employees.Manager_ID INNER JOIN
    Salaries ON Employees.Salary_Type_ID = Salaries.Salary_Type_ID 
WHERE (Store.Store_ID = 20561) 
ORDER BY Employee_ID

我知道我显然无法做到这一点,但我需要能够使用员工编号在每一行上使用该程序。我不知道该怎么做。

我可以创建一个函数,我可以在过程中使用select语句的结果,然后将其粘贴到表并将表返回到Reporting Services吗?

2 个答案:

答案 0 :(得分:1)

我建议使用User-Defind Function而不是存储过程。您可以在select语句中使用UDF来计算并返回所需的值,如下所示:

SELECT     
    Store.Store_ID, 
    Store.Store_Description, 
    Salaries.Income, 
    Salaries.Tax_Rate, 
    Managers.Manager_Name, 
    Employees.Employee_ID,
    udf_Get_Emplyee_estimation_Costs(Employee_ID) AS EstimationCost
FROM         
    Store INNER JOIN
    Managers ON Managers.Store_ID = Store.Store_ID INNER JOIN
    Employees ON Managers.Manager_ID = Employees.Manager_ID INNER JOIN
    Salaries ON Employees.Salary_Type_ID = Salaries.Salary_Type_ID 
WHERE (Store.Store_ID = 20561) 
ORDER BY Employee_ID

用户定义的功能:

CREATE FUNCTION udf_Get_Emplyee_estimation_Costs
(
    Employee_ID INT
)
RETURNS DOUBLE 
AS
RETURN 
(
    SELECT EstimationVal FROM SomeTable
)

答案 1 :(得分:0)

为什么不使用函数返回值 您可以在select语句中使用返回值

http://msdn.microsoft.com/en-us/library/aa258261(v=sql.80).aspx