下面是我的存储过程.我想使用存储过程从tbl_member中选择所有日期行并插入2表.但它不起作用.有人能帮帮我吗?
Create PROCEDURE sp_test AS BEGIN SET NOCOUNT ON; Declare @A Varchar(255), @B Varchar(255), @C Varchar(255), @D int Declare Table_Cursor Cursor For select A, B, C from tbl_Member Open Table_Cursor Fetch Next From Table_Cursor Into @A, @B, @C While(@@Fetch_Status=0) Begin Exec( 'insert into NewMember (A, B, C, D) values (@A, @B, @C, @D) set @D = @@IDENTITY Insert into MemberId (Mid) VALUES(@D) ) Fetch Next From Table_Cursor Into @A, @B, @C End Close Table_Cursor Deallocate Table_Cursor END GO
Pete OHanlon.. 8
我在这里看到的第一件事是你在不需要时使用光标.您可以将第一个查询重写为:
INSERT INTO NewMember(A, B, C, D) SELECT A, B, C, D FROM tbl_member
然后,我将对NewMember插入标识列的INSERT触发器.
create trigger myInsertTrigger on newmember for insert as insert into memberid(mid) select <> from inserted
顺便说一句 - 使用@@ IDENTITY来获取插入的标识是个坏主意.请改用SCOPE_IDENTITY函数.
我在这里看到的第一件事是你在不需要时使用光标.您可以将第一个查询重写为:
INSERT INTO NewMember(A, B, C, D) SELECT A, B, C, D FROM tbl_member
然后,我将对NewMember插入标识列的INSERT触发器.
create trigger myInsertTrigger on newmember for insert as insert into memberid(mid) select <> from inserted
顺便说一句 - 使用@@ IDENTITY来获取插入的标识是个坏主意.请改用SCOPE_IDENTITY函数.