面试常考题-存储过程实现自增长

1:存储过程实现自增长的功能是面试常考点:我写一个实例,实现主键编号为4位的自增长的varchar50的增长,实际面试的时候要用bigint类型,而且那些相对来说比较简单:

表结构如下:

create table classMgr(

id varchar(50) primary key not null,

Name Nvarchar(50))

存储过程如下:

create proc query_id(
@maxId varchar(50) output)
as
begin
declare @currentId varchar(50)
select top 1 @currentId=dbo.classMgr.id from dbo.classMgr order by id desc
select @maxId=RIGHT('0000'+LTRIM(cast(isnull(@currentId,'0') as integer)+1),4)
end

执行存储过程:


declare  @maxId bigint;
exec query_id @maxId output
print @maxId

得出的结构:

已达到预期要的结果。

 

asp.net调用存储过程:

            string connectiongString = "server=.;database=test;uid=sa;pwd=2009@ABCDEF";
            SqlConnection conn = new SqlConnection(connectiongString);
            try
            {
                conn.Open();
                SqlCommand cmd = new SqlCommand();
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Connection = conn;
                cmd.CommandText = "query_id";
                SqlParameter par = new SqlParameter("@maxId", SqlDbType.VarChar,50);
                par.Direction = ParameterDirection.Output;
                cmd.Parameters.Add(par);
                cmd.ExecuteNonQuery();
                this.lblMyId.Text = par.Value.ToString();
            }
            catch (Exception err)
            {
                conn.Close();
                throw new Exception(err.Message + err.StackTrace);
            }
            finally
            {
                conn.Dispose();
            }

posted @ 2012-06-17 10:45  王永华  阅读(428)  评论(0编辑  收藏  举报