2017-04-04 68 views
0
Declare Userrole_Cursor Cursor For 
Select (User_Role_id, 
    Pos_entity_Id, 
    User_role_code, 
    User_Role_description, 
    Print_Sequence, 
    Update_date, 
    Tx_id, 
    Add_date, 
    Add_Username, 
    Update_Username, 
    Active_Flag) from User_Role_Tb where pos_entity_id = (pos_entity_id) 

    Open Cursor 

    FETCH NEXT FROM UserRole_Cursor into 

以上是我編寫的光標創建,現在需要在所有提到的列中插入一個User_role_tb。請幫忙。這是我第一次使用遊標。如何在使用光標的現有表中插入記錄

+1

谷歌 – FLICKER

+0

我試過,但找不到任何的理解或簡單的,實際上插入到表中的一些「在SQL Server使用遊標示例」。 – Sandy777

+0

爲什麼即使打擾**遊標**?那些是邪惡的,浪費你的CPU週期 - 只要你可以避免它們! (和大多數時候,**你可以!**) –

回答

1

這個簡單的例子可以幫助你

-- assume this is your table 
create table #tmp (MyDbName varchar(100), MyDbId int, MyStatus int) 

-- you need to have a variable for each field. 
DECLARE @MyDbName varchar(100) 
DECLARE @MyDbId int 
DECLARE @MyDbStatus int 

DECLARE db_cursor CURSOR FOR 
    SELECT name, [dbid], [status] 
    FROM master.dbo.sysdatabases 

OPEN db_cursor 
FETCH NEXT FROM db_cursor INTO @MyDbName, @MyDbId, @MyDbStatus  

WHILE @@FETCH_STATUS = 0 
BEGIN 
    -- insert data into your table using variables 
    insert into #tmp (MyDbName, MyDbId, MyStatus) 
    values (@MyDbName, @MyDbId, @MyDbStatus) 

    -- fetch next row from cursor 
    FETCH NEXT FROM db_cursor INTO @MyDbName, @MyDbId, @MyDbStatus  
END 

CLOSE db_cursor 
DEALLOCATE db_cursor 

-- select from your table to make sure data is there 
select * from #tmp 
+0

謝謝。但你能否讓我知道,如果我可以硬編碼兩列並插入數據,因爲它是其他列?當然是 – Sandy777

+0

。在那種情況下,你只需要一個變量 – FLICKER

+0

是否應該創建我想要插入的所有列的變量? – Sandy777

相關問題