私は条件が真である場合は、1つのテーブルに複数のテーブルに挿入する、すなわちこのSQL Serverカーソルをセットベースの速度に変換する方法は?
表
Person
tableID PersonUniqueNumber
1 123
2 1234
3 121
4 12
5 113333
と別のテーブル
RentedHousesDetail
HouseId(tableId) HouseName HouseLocation ISOK
1 A CA NO
2 B DT NULL
3 C NY NULL
4 D CA
5 E CA
と他のテーブル
表 CALIFORNIAHOUSEを持っています
一人一人のために、私はRentedHousesDetailの彼houselocationがCAであるかどうかを確認するために持っているので、私は何をしなければならないことは、私は、テーブルCALIFORNIAHOUSEとSTATUSGREENにRentedHousesDetail.IDの単一の行の挿入を行うために表 STATUSGREEN
を持っているし、 RentedHousesDetail.ISOK列をNOに更新します。
テーブルには何千もの行があるので、私はカーソルを書きました。
DECLARE variables
DECLARE cursorName CURSOR -- Declare cursor
LOCAL SCROLL STATIC
FOR
select PERSON.ID of those rows only where we have CA in RentedhouseDetails
OPEN cursorName -- open the cursor
FETCH NEXT FROM cursorName
INTO variables
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM cursorName
FOR EACH ROW that we have from cursor, insert into CALIFORNIAHOUSE and STATUSGREEN and update RentedHousesDetail.ISOK to NO
END
CLOSE cursorName -- close the cursor
DEALLOCATE cursor
それは人とRentedhousedetailsテーブル内の行の数千人の上にカーソルを使用しても大丈夫です教えてください?どのように私は速度のセットベースの操作に変換することができますか?
のように 'NO'
として表RentedHousesDetailどこHouseLocation = 'CA' を更新しますか私はそれらの間に何の関係も見ませんでした。 –