当前位置:  开发笔记 > 编程语言 > 正文

存储过程,你能帮帮我吗?

如何解决《存储过程,你能帮帮我吗?》经验,为你挑选了1个好方法。

下面是我的存储过程.我想使用存储过程从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函数.



1> Pete OHanlon..:

我在这里看到的第一件事是你在不需要时使用光标.您可以将第一个查询重写为:

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函数.

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有