表A ,2个字段ID,Name
我做insert操做,打开事务,在A表中查询name是否和传入的@name参数一样,相同的话返回一个值,页面上需要报错,即表A的name不能有一样的。没有一样的话就insert。
谢谢了

解决方案 »

  1.   

    create proc pr_name(@name)
    as
    begin
        if(select 1 from tb where name=@name)
           raiserror ('name存在!', 16, 1)
        else
           insert into tb select @name
    end
      

  2.   

    if exists(select 1 from tb where name=@name)
      

  3.   


    if exists(select 1 from tb where name=@name)
        print 'error'
    else
        insert into ......
      

  4.   

    create proc pr_name(@name varchar(10))
    as
    begin
        if exists(select 1 from a where name=@name)
           raiserror ('name存在!', 16, 1)
        else
           insert into a select @name
    end
      

  5.   

    再问下,我通过asp.net 代码怎么获取raiserror ('name存在!', 16, 1)。就是说怎么能在页面上显示name存在!,是要写个返回的int值,通过int值再做判断,还是怎么样的。
      

  6.   

    我会有很多情况下校验,比如name或者code。我怎么在页面上区分出错的情况呢,请给下catch里的代码把,刚开始写存储过程,还不怎么懂,谢谢。
      

  7.   

       CREATE PROCEDURE dbo.AddUser
        @Name nvarchar
        as
        declare @_id int
        begin
        select top 1 @_id=id from users where nmae=@Name
        if @_ID>0
           return 0
        else
           insert into users (name) Values(@name)
        end
        return @@IDDENTIY程序中执行:
             SqlConnection conn = new SqlConnection(Conn_Str);
             SqlCommand cmd = new SqlCommand("AddUser", conn);
             cmd.CommandType = CommandType.StoredProcedure;
             cmd.Parameters.Add("@Name", SqlDbType.nvarchar).value="名字";
             cmd.Parameters.Add("@insert_id", SqlDbType.int).Direction = ParameterDirection.ReturnValue;   
      cmd.ExecuteNonQuery();
       //存储过程给返回值变量returnvalue这个0代表已经存在的用户,大于0则表示刚插入的用户ID值
       int returnvalue=cmd.Parameters[@insert_id].Value.ToString();
      

  8.   

    create table tbb(id int,name varchar(20))
    insert into tbb
    select 1,'foru' union all
    select 2,'go'select * from tbbalter procedure pro_iname
    @id int,
    @name varchar(20)
    as
    if exists(select 1 from tbb where name=@name)
    print 'error'
    else
    insert into tbb(name) select @nameexec pro_iname 5,'dd6'