您的位置:首页 > 数据库

SQL存储过程实例

2012-11-12 08:15 211 查看
--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;

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: