如何使用存储过程返回视图数据

时间:2011-10-11 09:32:05

标签: c# sql sql-server sql-view

嗨朋友们的要求是使用存储过程我应该从视图中返回所有值。

目前我们正在使用storedprocedure来返回表中给出的所有值,

CREATE PROCEDURE [dbo].[SuperGas_GetAllEmployees] 
    AS
BEGIN

SELECT [Employee ID]
      ,[First Name]
      ,[Last Name]
      ,[Group]
      ,[Location]
      ,[DOB]
      ,[DOJ]
      ,[Manager]
      ,[Projects]
      ,[Phone]
      ,[Extension]
  FROM [SuperGas].[dbo].[Employee]
END

我们通过将两个名为ExpenseView的表连接起来来创建一个视图,

CREATE VIEW [dbo].[ExpenseView] AS
SELECT Emp.[Employee ID], Emp.[First Name],Emp.[Last Name],Emp.Manager, Ep.[Expense Type],Ep.[Expense Amount],Ep.[Expense Date]
FROM [Employee Expense] as Ep
FULL JOIN Employee as Emp
ON EP.[Employee ID] = Emp.[Employee ID]

现在这里的问题就像在第一个存储过程中一样,如何使用存储过程返回上述视图的所有列(Expense)。 我们尝试使用与第一个程序相同的方法;但是查询中未标识View ExpenseView。

历史,

从我之前的问题我发现,使用Storedprocedure的视图是不好的。

但是我们的应用程序使用下面的c#代码使用存储过程从数据库中获取数据

string spName = "SuperGas_GetAllEmployees";

 DataSet ds = GetDatasetFromAdapter(spName);

更改此内容需要大量时间和额外的编码资源。因此,有什么方法可以返回整个视图(就像我们在给定的过程中为表执行SuperGas_GetAllEmployees所做的那样)这样我就可以利用当前的代码本身。

感谢您的所有帮助

编辑....

CREATE PROCEDURE [dbo].[SuperGas_GetAllExpenseView] 
    AS
BEGIN

    SELECT [Employee ID]
      ,[First Name]
      ,[Last Name]
      ,[Manager]
      ,[Expense Type]
      ,[Expense Amount]
      ,[Expense Date]
  FROM [SuperGas].[dbo].[ExpenseView]
END

GO

这里我收到费用类型,费用金额,费用日期和视图名称ExpenseView

字段的错误

请帮帮我

1 个答案:

答案 0 :(得分:2)

CREATE VIEW [dbo].[ExpenseView] AS

实际上是在哪里创建视图?在您的存储过程中,您使用FROM [SuperGas].[dbo].[ExpenseView] 您能否确保该视图位于[SuperGas]