日期:2014-05-18  浏览次数:20675 次

sql2000存储过程,请教
表A
ID 名字 年龄 ……
--------------------------
1 A 10
2 B 11
……

表B
ID A_id 学科 成绩
-----------------------------
1 1 语文 100
2 1 数学 110
3 2 语文 98
……

如何用存储过程插入某同学C的信息,其中需要判断C同学是否已经记录A表,如果不存在,插入A表,插入成绩B表;存在,更新A同学信息,查询B表是否存在学科成绩,不存则插入。 其中A_id值如何控制。

------解决方案--------------------
SQL code
if not exists(select 1 from a where 名字='c')
insert into a select 名字,年龄,...
insert into b select a_id,.成绩 
else
update a set ...
insert into b select .. where not exists(select 1 from b where 成绩=@成绩 and 学科=@学科)

------解决方案--------------------
SQL code

declare @CId int
set @CId=0
select @CId=ID from A where [名字]='C'
if (@CId>0)
begin
    update A set ... where [名字]='C'
    if not exists (select top (1) * from B where A_id=@CId and [学科]='语文')
    begin
        insert into B (A_id,[学科],[成绩]) values (@CId,'语文',85)
    end
end
else
begin
    insert into A ([名字],[年龄]) values ('C',21)
    set @CId =SCOPE_IDENTITY()
    insert into B (A_id,[学科],[成绩]) values (@CId,'语文',85)
end