테이블을 만들고 행을 거의 추가하지 않았습니다. 여기에 대한 스크립트가 있습니다. CURSOR를 사용한 간단한 열 업데이트
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[xEmployee]
(
[EmpID] [int] NOT NULL,
[EmpName] [varchar](50) NOT NULL,
[Salary] [int] NOT NULL,
[Address] [varchar](200) NOT NULL,
[YearlySalary] [int] NULL,
PRIMARY KEY CLUSTERED ([EmpID] ASC)
) ON [PRIMARY]
GO
INSERT INTO [dbo].[xEmployee] ([EmpID], [EmpName], [Salary], [Address], [YearlySalary])
VALUES (1, N'Mohan', 12000, N'Noida', NULL),
(2, N'Pavan', 25000, N'Delhi', NULL)
GO
당신이 볼 수 있듯이
, 나는Salary
열 및 데이터가 이미 존재합니다.
YearlySalary
이라는 열을 하나 더 추가했습니다. 현재 null입니다.
커서를 사용하여이 YearlySalary
열을 업데이트해야합니다. 따라서 1 행 2 열의 경우 YearlySalary = Salary * 12
이어야합니다.
다음과 같이 커서를 사용하려고합니다. 그러나 뭔가가 없거나 옳지 않습니다. 누군가 내가 잘못 가고 있는지 알려주실 수 있습니까?
SET NOCOUNT ON
DECLARE @salary int
DECLARE @id int
DECLARE @yearlySalary int
DECLARE tempCursor CURSOR STATIC FOR
SELECT EmpID,Salary, YearlySalary
FROM dbo.xEmployee
OPEN tempCursor
IF @@CURSOR_ROWS > 0
BEGIN
FETCH NEXT FROM tempCursor INTO @salary
WHILE @@FETCH_STATUS = 0
BEGIN
@yearlySalary = @salary * 12
INSERT INTO dbo.xEmployee (EmpId, Salary,YearlySalary)
VALUES (@id, @salary, @yearlySalary)
END
END
CLOSE tempCursor
DEALLOCATE tempCursor
SET NOCOUNT OFF
커서를 사용하는 일반적인 예를 시도하고 있습니다. 커서를 사용하지 않고도 업데이트가 작동한다는 것을 알고 있습니다. – Rihana
@Rihana. . . 커서 코드가'insert'보다는'update'를 사용하면 도움이 될 것입니다. 그러나 커서가 적절한 위치에서 문제가 발생하면 동적 SQL 행을 따라 뭔가를 생각하십시오. 예를 들어보기의 정의가있는 표를 만들고 표를 반복하여보기를 정의하십시오. –