【发布时间】:2017-10-06 19:17:32
【问题描述】:
我创建了一个表格并在其中添加了几行。这是脚本。
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 的列。这当前为空。
我需要使用游标更新此 YearlySalary 列。所以对于第一行和第二行,它应该是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
【问题讨论】:
标签: sql sql-server database cursor