0

こんにちは友人の要件は、ストアドプロシージャを使用して、ビューからすべての値を返す必要があるということです。

現在、指定されたとおりにテーブルからすべての値を返すストアドプロシージャがあります。

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という名前の2つのテーブルを、次のように結合してビューを作成しました。

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]

ここでの質問は、最初のストアドプロシージャの場合と同様ですが、ストアドプロシージャを使用して、上記のビュー(経費)のすべての列を返すにはどうすればよいですか。最初の手順と同じ方法を使用してみました。ただし、ViewExpenseViewはクエリで識別されません。

歴史、

以前の質問からわかったのですが、ストアドプロシージャでビューを使用するのはよくありません。

ただし、アプリケーションは以下のc#コードを使用して、ストアドプロシージャを使用してデータベースからデータを取得しています。

string spName = "SuperGas_GetAllEmployees";

 DataSet ds = GetDatasetFromAdapter(spName);

これを変更するには、コーディングに多大な時間と追加のリソースが必要です。したがって、現在のコード自体を利用できるように、ビュー全体を返す方法はありますか(与えられたプロシージャSuperGas_GetAllEmployees for Tablesで行ったように)。

すべてのあなたの助けをありがとう

編集中...

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

ここで、フィールドExpense Type、Expense Amount、Expense Date、およびビュー名ExpenseViewでエラーが発生します。

私を助けてください

4

1 に答える 1

2
CREATE VIEW [dbo].[ExpenseView] AS

実際にビューが作成される場所はどこですか?使用するストアドプロシージャFROM [SuperGas].[dbo].[ExpenseView] で、ビューが内部にあることを確認してください[SuperGas]

于 2011-10-11T10:15:25.640 に答える