Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

रिकॉर्ड अपडेट करने के लिए कर्सर का उपयोग कैसे करें

ऐसा लगता है कि आप 10 से शुरू होने वाले एम्प्नो को एक बढ़ा हुआ मान असाइन करना चाहते हैं।

ऐसा करने के लिए आप एक सीटीई और row_number() का उपयोग कर सकते हैं। कर्सर की कोई आवश्यकता नहीं है।

;with C as
(
  select empno,
         9 + row_number() over(order by (select 1)) as NewEmpNo
  from emp       
)
update C
set empno = NewEmpNo

ऐसा करने के लिए आप कर्सर संस्करण इस तरह दिख सकते हैं।

DECLARE @empno AS INT;
DECLARE @CurEmpNo AS INT;

SELECT @empno = 10;

DECLARE employee_cursor CURSOR FOR
  SELECT empno
  FROM   emp

OPEN employee_cursor;

FETCH NEXT FROM employee_cursor INTO @CurEmpNo

WHILE @@FETCH_STATUS = 0
  BEGIN
      UPDATE emp
      SET    empno = @empno
      WHERE  CURRENT OF employee_cursor;

      SELECT @empno = @empno + 1;

      FETCH NEXT FROM employee_cursor INTO @CurEmpNo
  END;

CLOSE employee_cursor;

DEALLOCATE employee_cursor;  


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर समानांतर बैकअप पुनर्स्थापना -1

  2. समूह का उपयोग करके तालिका से अंतिम रिकॉर्ड का चयन करें

  3. कैसे बताएं कि SQL सर्वर में एक कंप्यूटेड कॉलम नियतात्मक है या नहीं?

  4. कौन से कॉलम आम तौर पर अच्छी अनुक्रमणिका बनाते हैं?

  5. MS SQL सर्वर में डेटाबेस मेल सूचनाओं को कॉन्फ़िगर करना