Mar*_*rch 0 sql sql-server stored-procedures
下面是我的存储过程.我想使用存储过程从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
Run Code Online (Sandbox Code Playgroud)
我在这里看到的第一件事是你在不需要时使用光标.您可以将第一个查询重写为:
INSERT INTO NewMember(A, B, C, D)
SELECT A, B, C, D
FROM tbl_member
Run Code Online (Sandbox Code Playgroud)
然后,我将对NewMember插入标识列的INSERT触发器.
create trigger myInsertTrigger
on newmember
for insert
as
insert into memberid(mid)
select <<identity_column>> from inserted
Run Code Online (Sandbox Code Playgroud)
顺便说一句 - 使用@@ IDENTITY来获取插入的标识是个坏主意.请改用SCOPE_IDENTITY函数.