2016-08-03 53 views
-2

我有一個表Employee。以下是桌子的設計。如何使用SQL Server逐個獲取多行數據?

Employee表:

+-----------+-------------+---------------+ 
|EmployeeID | EmployeeName|EmployeeContact| 
+-----------+-------------+---------------+ 
|101  | test1  | 9999999999 | 
|102  | test2  | 9999999999 | 
|103  | test3  | 9999999999 | 
+-----------+-------------+---------------+ 

我想環路基於EmployeeID和更新EmployeeName基於EmployeeID

怎麼辦?請幫我解決這個任務。

+2

請解釋爲什麼你想在同一時間做這一個行,你打算怎樣更新員工的名字。可能會有更好的解決方案 – Tanner

+0

由於@Tanner表示請詳細解釋。 – Sami

+0

請顯示預期結果 – TheGameiswar

回答

3

不要循環 - 使用一套基於方法:

UPDATE dbo.Employee 
SET EmployeeName = ....... 

您需要定義並制定如何更新是應該發生的(你的問題很清楚這一點) 。

您可能需要將WHERE子句添加到UPDATE以便不更新每一行,並且您可能還需要連接到其他表。

閱讀所有關於UPDATE命令in the official MSDN documentation on it - 它也有很多不同的例子如何做這些事情。

0

這將幫助你:

DECLARE @curEmployee CURSOR; 
DECLARE @iEmpID BigINT 
DECLARE @vEmployeeName Varchar(50), @EmployeeContact Varchar(50) 

BEGIN 
    SET @curEmployee = CURSOR LOCAL READ_ONLY FAST_FORWARD FOR 
    select EmployeeID,EmployeeName, EmployeeContact from dbo.Employee 

    OPEN @curEmployee 
    FETCH NEXT FROM @curEmployee 
    INTO @iEmpID, @vEmployeeName, @EmployeeContact 

    WHILE @@FETCH_STATUS = 0 
    BEGIN 
    PRINT Cast (@iEmpID as Varchar(10)) + ' - ' + @vEmployeeName + ' - ' + @EmployeeContact 

    -- Here Write the code based on @iEmpID 

     FETCH NEXT FROM @curEmployee 
     INTO @iEmpID, @vEmployeeName, @EmployeeContact 
    END 

    CLOSE @curEmployee 
    DEALLOCATE @curEmployee 
END 
相關問題