![](/img/trans.png)
[英]How to execute stored procedure with input and output parameters using EF?
[英]data insert using input output stored procedure
我正在使用ASP.net C#创建一个Web应用程序。 我有一个预订表格,我需要使用存储过程将数据插入表中。 该表有几列,其中第二列是计算列。 设置存储过程以插入数据并在插入后从第二列中获取值。 以下是存储过程的代码:
Create Procedure sp_InsertCashPooja
@FirstName varchar(100),
@LastName varchar(100),
@TelNo bigint,
@Star char(50),
@Rasi char(50),
@Gothram char(50),
@PDMID int,
@PayMode bit,
@PujaName char(50),
@DonateAmt decimal(19,2),
@RcptNo varchar(25) output
as
Begin
SET NOCOUNT ON;
BEGIN TRY
BEGIN TRANSACTION
if @PujaName != 'DONATION'
Begin
INSERT INTO PoojaDetails (FirstName, LastName, TelNo, Star, Rasi, Gothram, PoojaDietyMasterID, PayMode) values (@FirstName,@LastName,@TelNo,@Star,@Rasi,@Gothram,@PDMID,@PayMode)
End
if @PujaName = 'DONATION'
Begin
DECLARE @isDonate int = 0;
INSERT INTO PoojaDetails (FirstName, LastName, TelNo, Star, Rasi, Gothram, PoojaDietyMasterID, PayMode, isDonate, DonateAmount) values (@FirstName,@LastName,@TelNo,@Star,@Rasi,@Gothram,@PDMID,@PayMode, @isDonate, @DonateAmt)
End
Select @RcptNo = max(ReceiptNo) from PoojaDetails
Return @RcptNo
COMMIT TRANSACTION
END TRY
BEGIN CATCH
IF (@@TRANCOUNT > 0)
ROLLBACK TRANSACTION
END CATCH
SET NOCOUNT OFF;
End
我想单击按钮插入数据:我能够找出以下代码。
protected void btnSave_Click(object sender, EventArgs e)
{
frmFirstName = txtFirstName.Text.Trim().ToUpper();
frmLastName = txtLastName.Text.Trim().ToUpper();
frmPhoneNo = Convert.ToInt32(txtPhoneNo.Text.Trim());
frmNakshatra = Convert.ToString(cmbNakshatra.SelectedItem).Trim();
frmRasi = Convert.ToString(cmbRasi.SelectedItem).Trim();
frmGothram = Convert.ToString(cmbGothram.SelectedItem).Trim();
frmPujaName = Convert.ToString(cmbPujaName.SelectedItem).Trim();
using (SqlConnection connection = new SqlConnection())
{
if (frmPayMode == "Cash")
{
if (frmPujaName == "DONATION")
{
SqlDataAdapter CashAdapter = new SqlDataAdapter();
CashAdapter.InsertCommand = new SqlCommand("sp_InsertCashPooja", connection);
CashAdapter.InsertCommand.CommandType = CommandType.StoredProcedure;
请帮助...。我想捕获返回的RcptNo,以后打算调用另一个ASPX页并使用查询字符串传递值。
谢谢
使用简单的SqlCommand调用您的SP
connection.Open();
var cmd = new SqlCommand("sp_InsertCashPooja", connection);
cmd.Parameters.AddWithValue("FirstName", frmFirstName);
// Add all the others parameters in same way
var id = (int)cmd.ExecuteScalar();
connection.Close();
将返回变量更改为:
Select @RcptNo = SCOPE_IDENTITY()
它将返回在此过程中为插入的记录创建的标识号。
使用sql参数。
连接= ConfigurationManager.AppSettings [“ mycon”];
SqlParameter[] para = new SqlParameter[2];
para[0] = new SqlParameter("@stored procedure column name", string name);
para[1] = new SqlParameter("@stored procedure column name", string name);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.