当前位置:编程学习 > asp >>

ASP.NET调用存储过程并接收存储过程返回值

 

假设表结构

Create Table Table_1

(

tid int identity(1,1),

number int

)

1.调用无参无返回值的存储过程

假设存储过程如下:

Create PROC proc_1

AS

Insert Table_1(number) Values(100)

GO

 

调用方法:

public static void exec_proc_1()

{

SqlCommand cmd = new SqlCommand("proc_1", con);//proc_1为存储过程名,con为已经建立好的连接

cmd.CommandType = CommandType.StoredProcedure;//设置执行类型为执行存储过程

cmd.ExecuteNonQuery();

}

 

2.调用有参有返回值的存储过程

假设存储过程如下:

Create PROC proc_2

@result int output,//要返回的参数

@number int,

@tid int

AS

Update Table_1 Set number=number+@number Where tid=@tid

Select @result=number From Table_1

GO

 

调用方法:

public static int exec_proc_2(int number, int tid)

{

SqlCommand cmd = new SqlCommand("proc_2", con);//同上

cmd.CommandType = CommandType.StoredProcedure;//同上

cmd.Parameters.Add(new SqlParameter("@result", SqlDbType.Int));//添加一个名为@result的参数,数据类型为SqlDbType.Int

cmd.Parameters["@result"].Direction = ParameterDirection.Output;//将@result参数设置成为接收输出参数

cmd.Parameters.AddWithValue("@number", number);

cmd.Parameters.AddWithValue("@tid", tid);           

cmd.ExecuteNonQuery();

int result = (int)cmd.Parameters["@result"].Value;//将输出的Object数据转换成int类型

return result;

}

 

3.调用返回一张表的存储过程并接收

假设存储过程如下

Create PROC proc_3

AS

Select * From Table_1--查询一张表

GO

 

调用方法:

public static DataTable exec_proc_3()

{

SqlCommand cmd = new SqlCommand("proc_3", con);//同上

cmd.CommandType = CommandType.StoredProcedure;//同上

SqlDataAdapter da = new SqlDataAdapter(cmd);//用SqlDataAdapter执行

DataTable table = new DataTable();//创建一张表

da.Fill(table);//填充表

return table;

}

 

摘自:小峰的博客

补充:Web开发 , ASP.Net ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,