2009-02-28 10 views
1

内のストアドプロシージャを呼び出します。 私の問題は、GetEmployeeFirstNameが従業員の姓と名を取得するためにEmployeeIDを渡さなければならないストアドプロシージャだということです。は、私は次のように読み込むにStoredProcを作成するためにattemtingていますストアドプロシージャ

ストアドプロシージャ内でstoredprocを呼び出すにはどうすればよいですか。

おかげ

マイク

答えて

2

これらはおそらく関数として適しています。

GetEmployeeFirstName(ep.EmployeeID)、GetEmployeeLastName(ep.EmployeeID)

いっそのこと、名前だけを持つテーブルを結合します。

1

あなたはEXECまたはsp_executesqlが別のストアドプロシージャからストアドプロシージャを実行するために使用することができます。 (あなたはあなたのRDBMSを指定していません)。

テーブルEmployeeDetailには、従業員の姓と名が含まれていませんか?

Select  
    ep.EmployeeID, ed.FirstName 
    ed.LastName, ed.EmployeeDateOfBirth, 
    ed.EmployeeAddress, ed.EmployeeAddress2, 
    ed.City, ed.State, ed.ZipCode 
From 
    EmployeeProfile ep 
    inner join EmployeeDetail ed ON ep.EmployeeID = ed.EmployeeID 
+0

実際のSQLは、実際のデータベースの種類によって異なります... – uzbones

1

SQL Serverでは、GetEmployeeLastNameをSelectステートメントリスト内で呼び出すために、データベース関数に変換します。

2

私はこれらのストアドプロシージャが何をするのか分かりません。姓と名がEmployeeProfileテーブルになくても、返される前に文字列を操作しなければならない場合でも、結合はストアドプロシージャや関数よりもはるかに優れたソリューションになります。特にパフォーマンスを考慮する場合。

GetEmployeexName sprocsを他の場所で使用しているため、これは問題ありません。彼らが何をしても、あなたの質問から呼び出されなければ、コードの重複は考慮しません。

結果セットの各行に対して、2つの他のプロシージャまたは関数が呼び出されることを理解する必要があります。これは非常にコストがかかり、数千人の従業員の比較的小さな結果セットであっても、アプリケーションを許容できないほど遅くする可能性があります。私が話していることは分かっています。最近のデータベースチューニングイニシアチブでは、クエリから多くの関数呼び出しを削除しました。

関連する問題