汗,
按照你这个思路可以考虑这么写
CREATE PROCEDURE 删除学生信息
@学生ID int
AS
begin
DECLARE @sumCount int,
DECLARE @jlCount int,
DECLARE @jtCount int
  
set @jtcount=(select count(*) from 家庭信息 where 学生ID=@学生ID)set @jlCount=(select count(*) from 学生简历 where 学生ID=@学生ID)
set @sumCount=@jlCount+@jtCountif @sumCount=0 
begin
  delete dbo.学生信息 where 学生ID=@学生ID
end

解决方案 »

  1.   

    EXISTS 指定一个子查询,检测行的存在。
    语法
    EXISTS subquery 
    subquery 是一个受限的 SELECT 语句---以上是它的语法,以下两种格式语法都正确
    create PROCEDURE 删除学生信息 @学生ID int AS
    begin
    set nocount on
    if(select 家庭信息ID from dbo.家庭信息 where 学生ID=@学生ID) is null and
    ((select 家庭信息ID from dbo.家庭信息 where 学生ID=@学生ID ) is null )delete dbo.学生信息 where 学生ID=@学生ID
    endCREATE PROCEDURE 删除学生信息2
    @学生ID int
    AS
    begin
    set nocount on
    if not exists (select 家庭信息ID from dbo.家庭信息 where 学生ID=@学生ID) or not exists
    (select 家庭信息ID from dbo.家庭信息 where 学生ID=@学生ID )
    delete dbo.学生信息 where 学生ID=@学生ID
    end
      

  2.   

    to:jwt1982(叛逆者)
     你的方法的确是一个好的解决办法,但不知道用EXIST 在这里效率和COUNT 哪个更好?
     希望能找到一个更优的方法!
    to:wgzaaa()
      感觉你的方法也应该是对的,我测试了,但不知道为什么,两个写法都提示同样的错误:
    服务器: 消息 170,级别 15,状态 1,过程 删除学生信息,行 18
    第 18 行: '@学生ID' 附近有语法错误。谢谢两位!
      

  3.   

    http://www.cnblogs.com/daniel206/archive/2007/01/19/624341.html关于EXIST和COUNT效率问题,你可以参考一下上边的文章。写的很好,看了之后你能对其有更深的了解,至于哪种效率更好,是要看其环境的,不同环境效率自然不同