一、创建存储过程:
Create procedure proc ado
@int nchar(5),
@out int output
As
Select * from ado where name=@in
Set @out=@@Rowcount
Return 8
系统函数: @@Rowcount:返回上一条记录数的总记录数
二、存储过程调用应该注意的问题
命名参数称对于sql语句任意命名,在存储过和中则不然命名参数名称是存储过程中参数名称
三、1、输 入参数input
SqlParameter pin=cmd.Parameters.Add(“@in”,SqlDbType.Nchar,5)
Pin.Direction=ParameterDirection.Input;
Pint,Value=”a”;
2、输出参数 output [InputOutput]
3、返回值 Return Value=a
Read.Close();
在2005版本中,有参数据存储过程 read.close()必须写,不写会造成得不到返回值
在2008版本中,有参数据存储过程 read.close()不写也可得到返回值,可能不完善
成员名称 | 说明 |
StoredProcedure | 存储过程的名称 |
ParameterDirection | 执行的关联 SqlCommand 不返回值,则 SqlParameter 包含空值 |
ReturnValue | 参数表示诸如存储过程、内置函数或用户定义函数之类的操作的返回值 |
Input | 输入参数 |
Output | 输出参数 |
InputOutput | 参数既能输入,也能输出 |
例:有参数存储过程应用
在数据库中创建表
create table ado
(
id int,
str nchar(10),
date datetime
)
在数据库创建存储过程
create proc pado2
@a nchar(5) ,
@b int output
as
select * from ado where str!=@a
set @b=@@ROWCOUNT
在ADO.NET中应用有参数存储过程
cmd=new SqlCommand("pado2",con);
cmd.CommandType=CommandType.StoredProcedure;
SqlParameter pin=cmd.Parameters.Add("@a",SqlDbType.NChar,5);
pin.Direction=ParameterDirection.Input;
pin.Value="6";
SqlParameter p2=cmd.Parameters.Add("@b",SqlDbType.Int);
p2.Direction=ParameterDirection.Output;
SqlParameter p3=cmd.Parameters.Add("@re",SqlDbType.Int);
p3.Direction=ParameterDirection.ReturnValue;
con.Open();
read=cmd.ExecuteReader();
ds=new DataSet();
ds.Load(read,LoadOption.PreserveChanges,"");
dataGridView1.DataSource=ds.Tables[0];
MessageBox.Show(p2.Value.ToString());
MessageBox.Show(p3.Value.ToString());
read.Close();
con.Close();
http://www.chinakdb.com/