日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#获取存储过程的 Return返回值和Output输出参数值

發布時間:2023/11/29 C# 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#获取存储过程的 Return返回值和Output输出参数值 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、不用SQLHelper.cs等幫助類

1.獲取Return返回值
?程序代碼
?存儲過程
Create PROCEDURE MYSQL
??@a int,
??@b int
AS
??return @a + @b
GO
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["LocalSqlServer"].ToString());
conn.Open();
SqlCommand MyCommand = new SqlCommand("MYSQL", 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());

2.獲取Output輸出參數值
?程序代碼
?存儲過程
Create PROCEDURE MYSQL
???@a int,
???@b int,
???@c int output
AS
???Set @c = @a + @b
GO
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["LocalSqlServer"].ToString());
conn.Open();
SqlCommand MyCommand = new SqlCommand("MYSQL", 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;
?????????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;
?????????}
?????????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;
????????try
????????{
????????????conn.Open();
????????????cmd.ExecuteNonQuery();
????????????iRet = (decimal)cmd.Parameters["@Amount"].Value;
????????}
????????catch (SqlException ex)
????????{
????????????throw ex;
????????}

二、用SQLHelper.cs等幫助類,其思想一樣

如:(貼出部分代碼)

string readercode = txt_reader_code.Text;
string bookcode = txt_book_code.Text;
decimal money = Convert.ToDecimal(txt_price.Text);
DateTime borrowDate = Convert.ToDateTime(DateTime.Now.ToShortDateString());
?DataTable table = new DBUtility.bookType().GetTableByBookBarCode(bookcode);
double borrowday;
double getday = 0d;
if (table != null && table.Rows.Count > 0)
{
????if (double.TryParse(table.Rows[0]["borrowday"].ToString(), out borrowday))
????{
?????????getday = borrowday;
????}
}
else
{
?????Pub.Util.AlertPostBack(Page, "得到圖書借閱天數失敗");
?????return;
}
DateTime returnDate = Convert.ToDateTime(DateTime.Now.AddDays(getday).ToShortDateString());
string readerName = txt_name.Text.Trim();
string bookName = txt_book_name.Text.Trim();

SqlParameter[] parameters = {
???????????new SqlParameter("@readerBarCode",SqlDbType.VarChar),
???????????new SqlParameter("@bookBarCode",SqlDbType.VarChar),
???????????new SqlParameter("@hire",SqlDbType.Money),
???????????new SqlParameter("@borrowDate",SqlDbType.DateTime),
???????????new SqlParameter("@returnDate",SqlDbType.DateTime),
???????????new SqlParameter("@readerName",SqlDbType.VarChar),
???????????new SqlParameter("@bookName",SqlDbType.VarChar),
???????????new SqlParameter("@return",SqlDbType.Int)???????????//添加一個返回參數
???????};
parameters[0].Value = readercode;
parameters[1].Value = bookcode;
parameters[2].Value = money;
parameters[3].Value = borrowDate;
parameters[4].Value = returnDate;
parameters[5].Value = readerName;
parameters[6].Value = bookName;
parameters[7].Direction = ParameterDirection.ReturnValue; //聲明此參數是返回類型


DBUtility.SQLHelper.ExecuteNonQuery(DBUtility.SQLHelper.BookConn, CommandType.StoredProcedure, "p_bookBorrow", parameters);


int num = Convert.ToInt32(parameters[7].Value.ToString());//提取存儲過程返回參數的值,成功為0,不成功為-1

if (num == 0)
{?????Pub.Util.AlertPostBack(Page, "借閱成功");
}
else
???Pub.Util.AlertPostBack(Page, "借閱失敗");

?

?

?

存儲過程

?

create procedure p_bookBorrow(@readerBarCode varchar(30),@bookBarCode varchar(30),@hire money,@borrowDate datetime,@returnDate datetime,@bookName varchar(30),@readerName varchar(20))
as
begin tran
insert into t_reader_book values(@readerBarCode,@bookBarCode,@borrowDate,@returnDate,@bookName,@readerName)
if(@@error<>0)
begin
??rollback tran
??return -1
end
update t_readerinfo set borrownum=borrownum+1,[money]=[money]-@hire where readerBarCode = @readerBarCode
if(@@error<>0)
begin
??rollback tran
??return -1
end
update t_bookinfo set stock=stock-1 where bookBarCode?=@bookBarCode
if(@@error<>0)
begin
??rollback tran
??return -1
end
insert into logs values(getDate(),'條形碼號為:'+@readerBarCode+'的讀者,借閱了圖書編號為:'+@bookBarCode+'的書籍')
if(@@error<>0)
begin
??rollback tran
??return -1
end
commit tran
if(@@error<>0)
??return -1
else
??return 0

GO

?

轉載于:https://www.cnblogs.com/xsq521/p/5509531.html

總結

以上是生活随笔為你收集整理的C#获取存储过程的 Return返回值和Output输出参数值的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。