create procedure p_organization @orgName varchar(20),@parentId varchar(20),@newId varchar(20) output
as
declare @maxId int
select @maxId=max(Or_Id)+1 from T_Organization where Or_Parent=@parentId
if @maxid>1
begin
set @newid= right(replace(space(len(@parentId)+2),' ','0')+cast(@maxId as varchar) ,len(@parentId)+2)
insert into T_Organization(Or_Id,Or_Name,Or_Parent) values(@newid,@orgName,@parentId)
end
else
begin
set @newid=@parentId+'01'
insert into T_Organization(Or_Id,Or_Name,Or_Parent) values(@newId,@orgName,@parentId)
end

解决方案 »

  1.   

    TEST:declare @ret varchar(200)
    exec p_organization '12','34',@ret output
    select @ret 
      

  2.   

    if exists(select * from sysobjects where type='p' and name='P_Organization')
       drop proc 'P_Organization'create proc P_Organization
    @orgName nvarchar(10),
    @parentid nvachar(10),
    @newid nvarchar(10) output
    as
       declare @maxid int
       declare @tnewid nvarchar(10)
       select @maxid=max(Or_Id)+1 from T_Organization where Or_Parent=@parentid
       if(@maxid>1)
           set @tnewid=replace(space(len(@parentid)+2-len(@maxid)),' ','0')+@maxid
       else
           set @tnewid=@parentid+'01'
       insert into T_Organization(Or_Id,Or_Name,Or_Parent) values(@tnewid,@orgName,@parentId)
       set @newid=@tnewid
    go