存储过程使用回顾

好久没用存储过程了,今天想起来了,就顺便写了一下,最为回顾吧看一个简单的吧

create proc proc1 --创建存储过程
@userid varchar(20)
as
select * from SYS_USERS where  userid=@userid;
go

这里有一点要说明一下在说明一下啊,在创建的时候这个as是一定不能掉的,否则就会报错的。

declare @user varchar(20) --调用存储过程
set @user='admin'
exec proc1 @user

这个是调用存储过程,有人会说,这个简单,我想知道怎么在程序里面调用,那好,我就把程序里然后调用也简单的说一下。

方法一

SqlConnection conn = new SqlConnection("server=(local);database=sql1;uid=sa;pwd=sa");
conn.Open();

SqlCommand cmd = new SqlCommand("exec proc1 @uid=admin ", conn);//Command中写调用存储过程的语句大家应该看出来了和直接在查询分析器中执行很类似,“exec 存储过程名 @参数1=参数值,@参数2=参数值”
SqlDataReader sdr = cmd.ExecuteReader();//执行存储过程
while (sdr.Read())
{
     Response.Write(sdr["UserName"].ToString());//输出查询到的值
}
sdr.Close();
conn.Close();

方法二:

SqlConnection conn = new SqlConnection("server=(local);database=sql1;uid=sa;pwd=sa");
conn.Open();//打开数据库连接
SqlCommand cmd = new SqlCommand("proc1", conn);//存储过程名
cmd.CommandType = CommandType.StoredProcedure;//设置命令类型为存储过程
SqlParameter[] param = new SqlParameter[]{
     new SqlParameter("uid", SqlDbType.VarChar,255), 
};//定义参数,这些是存储过程中要调用的参数,也可以通过直接使用cmd.AddWithValue方法添加参数
param[0].Value = "admin";//给参数赋值
cmd.Parameters.AddRange(param);//一定要记得将刚定义的参数添加到cmd的参数中,不然前面的参数就白弄了。
string sname =(string)cmd.ExecuteScalar();//如果存储过程返回的是单个值,我们可以直接这样取出所要的值
Response.Write(sname);
sdr.Close();
conn.Close();

上面是不带输出参数的,下面就回顾一下带输出参数的用法

create proc proc1
@userid varchar(20),
@fn_name varchar(20) output
as
select @fn_name=FN_NAME from SYS_USERS where userid=@userid;

--以下是在查询分析器中调用的方法
declare @fn_name varchar(20) --声明一个变量用来传递参数
exec proc1 'admin',@fn_name output --注,要标记为output变量
print @fn_name

看看怎么在程序里面调用

SqlConnection conn = new SqlConnection("server=(local);database=sql1;uid=sa;pwd=");
conn.Open();
SqlCommand cmd = new SqlCommand("proc_1", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("userid", "admin");
cmd.Parameters.Add("fn_name", SqlDbType.VarChar, 255);
cmd.Parameters["fn_name"].Direction = ParameterDirection.Output;//设置参数为输出参数
cmd.ExecuteNonQuery();
string sname = (string)cmd.Parameters["fn_name"].Value;//获取输出参数的值
Response.Write(sname);
conn.Close();
好了,今天的总结到此结束了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值