我正在尝试将t_code从表A填充到表B,其中表A" name"比如表B" name",但我在使代码工作时遇到了一些问题。
语法有什么问题?我是使用游标的初学者。
DECLARE c CURSOR READ_ONLY FAST_FORWARD FOR
SELECT name
FROM [GA_EMPLOYEE2]
DECLARE @id VARCHAR(255)
-- Open the cursor
OPEN c
FETCH NEXT FROM c INTO @id
WHILE (@@FETCH_STATUS = 0)
BEGIN
INSERT INTO [GA].[dbo].[GA_EMPLOYEE2].[t_code]
SELECT [GA].[dbo].[GA_EMPLOYEE1].[t_code]
WHERE [GA].[dbo].[GA_EMPLOYEE1].[name] LIKE '%@id%'
FETCH NEXT FROM c INTO @id
END
-- Close and deallocate the cursor
CLOSE c
DEALLOCATE c
答案 0 :(得分:2)
所以...看起来你正在抓取EMPLOYEE2
中的名单列表,然后对于列表中EMPLOYEE1
所在的name
中的每个tcode,你要插入EMPLOYEE1
tcode
加入EMPLOYEE2
。
没有必要使用所有这些CURSOR rigamaroo。这是一个非常基本的INSERT语句,其中包含INNER JOIN
:
INSERT INTO [GA].[dbo].[GA_EMPLOYEE2].[t_code]
SELECT [GA].[dbo].[GA_EMPLOYEE1].[t_code]
FROM [GA].[dbo].[GA_EMPLOYEE1]
INNER JOIN [GA_EMPLOYEE2] ON
[GA].[dbo].[GA_EMPLOYEE1].[name] LIKE [GA_EMPLOYEE2].[name]
虽然我觉得你的代码没有充分描述你的意图。也许您希望UPDATE
EMPLOYEE2
个NAME
tcode
条记录在匹配的EMPLOYEE1
表中找到UPDATE
[GA].[dbo].[GA_EMPLOYEE2]
SET
[GA].[dbo].[GA_EMPLOYEE2].[t_code] = [GA].[dbo].[GA_EMPLOYEE1].[t_code]
FROM
[GA].[dbo].[GA_EMPLOYEE2]
INNER JOIN [GA].[dbo].[GA_EMPLOYEE1] ON
[GA].[dbo].[GA_EMPLOYEE2].[name] = [GA].[dbo].[GA_EMPLOYEE1].[name];
。如果是,那么:
{{1}}