2017-04-04 15 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

を助けることができるGoogleのいくつかの「SQL Serverでは、カーソルを使用してのサンプル」 – FLICKER

+0

私が試したが、実際にテーブルに挿入することを理解するものや単純なを見つけることができませんでした。 – 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

ありがとうございます。しかし、私は2つの列をハードコードでき、それが他の列であるのでデータを挿入できるかどうか教えてください。もちろん – Sandy777

+0

です。その場合は1つの変数だけが必要です – FLICKER

+0

それは私が挿入しようとしているすべての列から変数を作成する必要がありますか? – Sandy777

関連する問題