手机
当前位置:查字典教程网 >编程开发 >mssql数据库 >SqlServer获取存储过程返回值的实例
SqlServer获取存储过程返回值的实例
摘要:1.OUPUT参数返回值复制代码代码如下:CREATEPROCEDURE[dbo].[nb_order_insert](@o_buyerid...

1.OUPUT参数返回值

复制代码 代码如下:

CREATE PROCEDURE [dbo].[nb_order_insert](

@o_buyerid int ,

@o_id bigint OUTPUT

)

AS

BEGIN

SET NOCOUNT ON;

BEGIN

INSERT INTO [Order](o_buyerid )

VALUES (@o_buyerid )

SET @o_id = @@IDENTITY

END

END

存储过程中获得方法:

复制代码 代码如下:

DECLARE @o_buyerid int

DECLARE @o_id bigint

EXEC [nb_order_insert] @o_buyerid,@o_id output

2.RETURN过程返回值

复制代码 代码如下:

CREATE PROCEDURE [dbo].[nb_order_insert](

@o_buyerid int ,

@o_id bigint OUTPUT

)

AS

BEGIN

SET NOCOUNT ON;

IF(EXISTS(SELECT * FROM [Shop] WHERE [s_id] = @o_buyerid ))

BEGIN

INSERT INTO [Order](o_buyerid ) VALUES (@o_buyerid )

SET @o_id = @@IDENTITY

RETURN 1 — 插入成功返回1

END

ELSE

RETURN 0 — 插入失败返回0 END

存储过程中的获取方法

复制代码 代码如下:

DECLARE @o_buyerid int

DECLARE @o_id bigint

DECLARE @result bit

EXEC @result = [nb_order_insert] @o_buyerid ,o_id output

3.SELECT 数据集返回值

复制代码 代码如下:

CREATE PROCEDURE [dbo].[nb_order_select](

@o_id int

)

AS

BEGIN

SET NOCOUNT ON;

SELECT o_id,o_buyerid FROM [Order]

WHERE o_id = @o_id

GO

存储过程中的获取方法

(1)、使用临时表的方法

复制代码 代码如下:

CREATE TABLE [dbo].[Temp](

[o_id] [bigint] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,

[o_buyerid] [int] NOT NULL

)

INSERT [Temp] EXEC [nb_order_select] @o_id

– 这时 Temp 就是EXEC执行SELECT 后的结果集

SELECT * FROM [Temp]

DROP [Temp] — 删除临时表

1.获取Return返回值

复制代码 代码如下:

SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnStr"].ToString());

conn.Open();

SqlCommand MyCommand = new SqlCommand("nb_order", conn); //存储过程名字

MyCommand.CommandType = CommandType.StoredProcedure;//指定类型为存储过程

MyCommand.Parameters.Add(new SqlParameter("@a", SqlDbType.Int));

MyCommand.Parameters["@a"].Value = 10;

MyCommand.Parameters.Add(new SqlParameter("@b", SqlDbType.Int));

MyCommand.Parameters["@b"].Value = 20;

MyCommand.Parameters.Add(new SqlParameter("@return", SqlDbType.Int));

MyCommand.Parameters["@return"].Direction = ParameterDirection.ReturnValue;

MyCommand.ExecuteNonQuery(); //执行存储过程

Response.Write(MyCommand.Parameters["@return"].Value.ToString()); //取得return的返回值

2.获取Output输出参数值

复制代码 代码如下:

SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnStr"].ToString());

conn.Open();

SqlCommand MyCommand = new SqlCommand("nb_order", conn);

MyCommand.CommandType = CommandType.StoredProcedure;

MyCommand.Parameters.Add(new SqlParameter("@a", SqlDbType.Int));

MyCommand.Parameters["@a"].Value = 20;

MyCommand.Parameters.Add(new SqlParameter("@b", SqlDbType.Int));

MyCommand.Parameters["@b"].Value = 20;

MyCommand.Parameters.Add(new SqlParameter("@c", SqlDbType.Int));

MyCommand.Parameters["@c"].Direction = ParameterDirection.Output;

MyCommand.ExecuteNonQuery();

Response.Write(MyCommand.Parameters["@c"].Value.ToString()); //指定取得存储过程的返回值

C#接收存储过程返回值:

复制代码 代码如下:

public static int User_Add(User us)

{

int iRet;

SqlConnection conn = new SqlConnection(Conn_Str);

SqlCommand cmd = new SqlCommand("User_Add", conn);

cmd.CommandType = CommandType.StoredProcedure; //指定存储过程 AddWithValue可以指定名称和值,而Add需要指定名称,类型,再给value

cmd.Parameters.AddWithValue("@UName", us.UName);

cmd.Parameters.AddWithValue("@UPass", us.UPass);

cmd.Parameters.AddWithValue("@PassQuestion", us.PassQuestion);

cmd.Parameters.AddWithValue("@PassKey", us.PassKey);

cmd.Parameters.AddWithValue("@Email", us.Email);

cmd.Parameters.AddWithValue("@RName", us.RName);

cmd.Parameters.AddWithValue("@Area", us.Area);

cmd.Parameters.AddWithValue("@Address", us.Address);

cmd.Parameters.AddWithValue("@ZipCodes", us.ZipCodes);

cmd.Parameters.AddWithValue("@Phone", us.Phone);

cmd.Parameters.AddWithValue("@QQ", us.QQ);

cmd.Parameters.Add("@RETURN_VALUE", "").Direction = ParameterDirection.ReturnValue; //指定输出参数是返回值

try

{

conn.Open();

cmd.ExecuteNonQuery();//执行存储过程

iRet = (int)cmd.Parameters["@RETURN_VALUE"].Value; //取得return的值

}

catch (SqlException ex)

{

throw ex;

}

finally

{

conn.Close();

}

return iRet;

}

C#接收存储过程的输出参数:

复制代码 代码如下:

public static decimal Cart_UserAmount(int UID)

{

decimal iRet;

SqlConnection conn = new SqlConnection(Conn_Str);

SqlCommand cmd = new SqlCommand("Cart_UserAmount", conn);

cmd.CommandType = CommandType.StoredProcedure;

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

cmd.Parameters.Add("@Amount", SqlDbType.Decimal).Direction=ParameterDirection.Output; //利用Add方法为其添加名称,类型和输出参数

try

{

conn.Open();

cmd.ExecuteNonQuery();

iRet = (decimal)cmd.Parameters["@Amount"].Value; //取得存储过程中的输出参数

}

catch (SqlException ex)

{

throw ex;

}

finally

{

conn.Close();

}

return iRet;

}

C#取得结果集:

复制代码 代码如下:

string sqlw = string.Format("exec sp_UserInfo {0}", uid);

DataTable dsuser = SqlConn.GetDataSet(sqlw).Tables[0];

public static DataSet GetDataSet(string sql)

{

string connStr = System.Configuration.ConfigurationManager.ConnectionStrings["ConnStr"].ToString();

SqlConnection conn = new SqlConnection(connStr);

SqlCommand cmd = new SqlCommand(sql, conn);

SqlDataAdapter da = new SqlDataAdapter(cmd); //直接用SqlDataAdapter将结果集取出来放入dataset中

DataSet ds = new DataSet();

da.Fill(ds);

conn.Close();

cmd.Dispose();

return ds;

}

【SqlServer获取存储过程返回值的实例】相关文章:

SQL Server 存储过程解析

SQLServer中的存储过程

sqlserver2005利用临时表和@@RowCount提高分页查询存储过程性能示例分享

sqlserver 复制表 复制数据库存储过程的方法

sqlserver 2000 远程连接 服务器的解决方案

SQL Server下几个危险的扩展存储过程

在SQL Server启动时自动执行存储过程。第1/2页

SqlServer 序号列的实现方法

Sql Server中的视图介绍

Sql语句与存储过程查询数据的性能测试实现代码

精品推荐
分类导航