前驱:我必须使用存储过程,我正在使用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吗?
答案 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