SQL存储过程实例

--1.存储过程复用代码案例--如果english不及格的人超过半数
--则给每个人增加2分,循环加,直到不及格的人数少于一半.
--usp_promoteGrade有一个参数,及格分数线@passline.


use MySchool
select * from Score
update Score set english=50 where english between 60 and 90
create proc usp_promoteGrade
@passline int
as
   begin
      declare @count1 int=(select COUNT(*) from Score)
      declare @loster int=(select COUNT(*) from Score where english<@passline)
      declare @harfcount int =floor(@count1/2)
      while @harfcount<@loster
         begin
           update Score set english+=2 where english<@passline
           set @loster=(select COUNT(*) from Score where english<@passline) 
         end
   end
   
   exec usp_promoteGrade 60


--2.ADO中使用存储过程
--2.1-1写usp_Login存储过程,参数有三个,其中第三个参数为output
--用来返加登陆是否成功,成功1,失败0(@uname varchar(50),
--@password varchar(50),@result bit output)
  create table T_user
  (
   FuseName nvarchar(50),
   Fpassword varchar(50)
  )
  insert into T_user values('admin','888888')
  select * from T_user
create proc usp_Login
@useName varchar(50),@password varchar(50),@result bit output
 as
   begin
           
             
         declare @count int
       set @count=(select COUNT(*) from T_user where FuseName=@useName and Fpassword=@password)
        if @count>0
          begin
           set  @result=1
          end
        else
            begin
             set @result=0
            end
            
   end
   
   declare @r bit
   exec usp_Login 'admin','888888',@r output
   print @r
     
--2.1-2在login.aspx中使用设计登陆界面,使用以上存储过程.
 
            protected void btn_Click(object sender, EventArgs e)
        {




            string usename = useName.Text.Trim();
            string pwd = password.Text.Trim();


            string conStr = ConfigurationManager.ConnectionStrings["sqlservercon"].ConnectionString;
            using (SqlConnection conn = new SqlConnection(conStr))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    string use_name = "usp_Login";
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.CommandText = use_name;
                    SqlParameter prm1 = new SqlParameter("@useName", usename);
                    SqlParameter prm2 = new SqlParameter("@password", pwd);
                    SqlParameter prm3 = new SqlParameter("@result", System.Data.SqlDbType.Bit);
                    prm3.Direction = ParameterDirection.Output;
                    cmd.Parameters.Add(prm1);
                    cmd.Parameters.Add(prm2);
                    cmd.Parameters.Add(prm3);




                    int r = cmd.ExecuteNonQuery();
                    Label1.Text =r.ToString();
                    bool b = Convert.ToBoolean(prm3.Value);
                    if (b==true)
                    {
                        Label2.Text = "登录成功";
                    }
                    else
                    {
                        Label2.Text = "登录失败";
                    }
                }
            }
        }


--2.2-1写usp_chkLogin只有两个参数没有output参数.
  use MySchool
  select * from T_user
   create proc usp_chkLogin
   @useName1 varchar(50),
   @password1 varchar(50)
   as
     begin
       select COUNT(*) from T_user where FuseName=@useName1 and Fpassword=@password1
     end
    
   exec usp_chkLogin 'admin','888888'      


--2.1-2写login.aspx中使用设计登陆界面,使用以上存储过程.


       protected void btn_Click(object sender, EventArgs e)
        {


            string usename = useName.Text.Trim();
            string pwd = password.Text.Trim();


            string conStr = ConfigurationManager.ConnectionStrings["sqlservercon"].ConnectionString;
            using (SqlConnection conn = new SqlConnection(conStr))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    string use_name = "usp_chkLogin";
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.CommandText = use_name;
                    SqlParameter prm1 = new SqlParameter("@useName1", usename);
                    SqlParameter prm2 = new SqlParameter("@password1", pwd);
                    cmd.Parameters.Add(prm1);
                    cmd.Parameters.Add(prm2);




                    object obj = cmd.ExecuteScalar();
                    int b = Convert.ToInt32(obj);
                    if (b>0)
                    {
                        Label2.Text = "登录成功";
                    }
                    else
                    {
                        Label2.Text = "登录失败";
                    }
                }
            }
        


        }


--3.写插入存储过程,并在注册页面中使用.


   create proc usp_T_user_Insert
   @useName2 varchar(50),
   @password2 varchar(50)
   as
     begin
        insert into T_user values(@useName2,@password2)
     end
    
    exec usp_T_user_Insert 'shang','111111' 
   select * from T_user
--4.写删除存储过程,并在注册页面中使用.
 
   create proc usp_T_user_Delete
   @useName3 varchar(50),
   @password3 varchar(50)
   as 
     begin
       delete from T_user where FuseName=@useName3 and Fpassword=@password3
     end




--5.写查询存储过程,在注册页面中使用.(选做可以用winfrom实现
--dataGradView)


  create proc usp_T_user_Select
  @useName4 varchar(50),
  @password4 varchar(50)
  as
    begin
      select * from T_user where FuseName=@useName4 and Fpassword=@password4
    end
    
    
    
    
        private void button1_Click(object sender, EventArgs e)
        {
            string usename = useName.Text.Trim();
            string pwd = password.Text.Trim();


            DataSet dataset = new DataSet();//在内存中开辟空间给 dataset
            string ConnStr = "Data Source=EJNSWJOZ0JSDS7J;Initial Catalog=MySchool;Persist Security Info=True;User ID=sa;Password=111111";
            using (SqlConnection conn = new SqlConnection(ConnStr))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    string use_name = "usp_T_user_Select";
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.CommandText = use_name;
                    SqlParameter prm1 = new SqlParameter("@useName3", usename);
                    SqlParameter prm2 = new SqlParameter("@password3", pwd);


                    cmd.Parameters.Add(prm1);
                    cmd.Parameters.Add(prm2);


                    SqlDataAdapter adapeter = new SqlDataAdapter(cmd);//把数据库服务器中的查询结果给转接器 adapter
                    adapeter.Fill(dataset);//adapter把查询结果交给dataset


                    dataGridView1.DataSource=adapeter;


            }




        }
    }
原文地址:https://www.cnblogs.com/qiqiBoKe/p/2791624.html