2011-12-18 3 views
-2

は、私はテーブルstudent(int ID, nvarchar(10) studentName)myStudentType (int ID, nvarchar(10) studentName)MERGE文は、2008

は私がmyStudentTypeパラメータ(@students)とパラメータを受け入れるストアドプロシージャを作成する必要がテーブルのユーザタイプを持っている@newname

mySp(@students myStudentType, @newname nvarchar(10)) 

を入力してmyStudentTypeを生徒とマージして、両方のテーブルに存在するIDを持つすべての行に今度は学生テーブルにあるstudentName - @newname(パラメータ) とSPは(マージを優先)することを行うための最善の方法は何

に学生テーブルを更新していなかった@studentsから

おかげ

+0

私は、マージを使用してstudentテーブル内のすべての行を更新する部分しか持っていません...私はspにparamで更新されなかったすべてのレコードを取得する方法を知らない –

答えて

0

のすべてのレコードのリストを返します。私が最も問題になると思うの仕様の一部です:

spは学生のテーブルで更新されませんでした@studentsからのすべてのレコードのリストを返します

specは 'table'を意味する 'list'と仮定します(T-SQLには 'list'型の概念はありません)。出力パラメータは、TABLEタイプ(ユーザ定義のテーブルタイプを含む)にすることはできません。関数はテーブルを返すことができますが、関数を介してベーステーブルを更新することはできません。詳細と解決方法については、Erland SommarskogのHow to Share Data Between Stored Proceduresを参照してください。