简体   繁体   English

如何创建存储过程

[英]How to create stored procedure

How to create stored procedure for this c# statement 如何为此C#语句创建存储过程

String Orders = "INSERT INTO Orders VALUES('" + DDLCustomerID.SelectedValue + "','" + Convert.ToInt32(TxtNetPrice.Text) + "');" + " SELECT SCOPE_IDENTITY();";
SqlCommand command = new SqlCommand(Orders, Connection);
command.CommandType = CommandType.Text;

Connection.Open();
int intID = Convert.ToInt32(command.ExecuteScalar());

String Orderdetails1 = "INSERT INTO OrderDetails VALUES(" + intID + ",'" + DDLProduct1.SelectedItem + "','" + Convert.ToInt32(TxtPrice1.Text) + "','" + Convert.ToInt32(TxtQuantity1.Text) + "','" + Convert.ToInt32(TxtTotalPrice1.Text) + "')";
SqlCommand Command1 = new SqlCommand(Orderdetails1, Connection);
Command1.CommandType = CommandType.Text;
Command1.ExecuteNonQuery();

String Orderdetails2 = "INSERT INTO OrderDetails VALUES(" + intID + ",'" + DDLProduct2.SelectedItem + " ','" + Convert.ToInt32(TxtPrice2.Text) + "','" + Convert.ToInt32(TxtQuantity2.Text) + "','" + Convert.ToInt32(TxtTotalPrice2.Text) + "')";
SqlCommand Command2 = new SqlCommand(Orderdetails2, Connection);
Command2.CommandType = CommandType.Text;
Command2.ExecuteNonQuery();

String Orderdetails3 = "INSERT INTO OrderDetails VALUES(" + intID + ",'" + DDLProduct3.SelectedItem + " ','" + Convert.ToInt32(TxtPrice3.Text) + "','" + Convert.ToInt32(TxtQuantity3.Text) + "','" + Convert.ToInt32(TxtTotalPrice3.Text) + "')";
SqlCommand Command3 = new SqlCommand(Orderdetails3, Connection);
Command3.CommandType = CommandType.Text;
Command3.ExecuteNonQuery();

Response.Write("<script>alert('Successfully Inserted');</script>");
Connection.Close();

How to create stored procedure for this c# statement The table I created in SQL SERVER is 如何为此c#语句创建存储过程我在SQL SERVER中创建的表是

CREATE TABLE Customers
(
     CustomerID INT IDENTITY(1, 1) PRIMARY KEY,
     FirstName  NVARCHAR(45),
     LastName   NVARCHAR(45),
     Address    NVARCHAR(45)
)

CREATE TABLE Orders
(
    OrderID    INT IDENTITY(1, 1) PRIMARY KEY,
    CustomerID INT FOREIGN KEY REFERENCES Customers(CustomerID),
    TotalPrice  INT
)

CREATE TABLE OrderDetails
(
    OrderID     INT FOREIGN KEY REFERENCES Orders(OrderID),
    ProductName NVARCHAR(45),
    Quantity    NVARCHAR(45),
    Price       NVARCHAR(45),
    TotalPrice  INT
)

I want to create a stored procedure for this statement 我想为此语句创建一个存储过程

This is the SQL code that you need to write : 这是您需要编写的SQL代码:

Syntax for stored procedure : 存储过程的语法:

Create Proc Proc_Name
(
  @PARAM1 DATATYPE,
  ....
)
AS
BEGIN
   BODY OF THE SP
END

This is the way to create the stored procedure in SQL. 这是在SQL中创建存储过程的方法。 As you have bunch of queries that you are executing at the single shot. 由于您有一堆查询,因此一次执行即可。 You also tack care of your transaction. 您还需要处理您的交易。 If suppose your last insert query got EXCEPTION then you above all the queries needs to be rollback & not should be executed. 如果假设您的最后一个插入查询获得了EXCEPTION那么您首先需要对所有查询进行回滚,而不应执行这些查询。 I have also done rollback in the stored procedure. 我还完成了存储过程中的回滚。

    CREATE PROC Procedure_Name
(
    @Customer_id INT,
    @TxtNetPrice FLOAT,
    @DDLProduct1 INT,
    @TxtQuantity1 FLOAT,
    @TxtTotalPrice1 FLOAT,
    @TxtPrice1 FLOAT,
    @intID INT
)
AS
BEGIN

    SET NOCOUNT ON


    BEGIN TRY
    BEGIN TRANSACTION
        INSERT INTO Orders VALUES(@Customer_id,@TxtNetPrice)
        DECLARE @S_ID int;
        SET @S_ID  = (SELECT SCOPE_IDENTITY())

        INSERT INTO 
            OrderDetails 
        VALUES(@intID,@DDLProduct1,@TxtPrice1,@TxtQuantity1,@TxtTotalPrice1)

    COMMIT
    END TRY

    BEGIN CATCH 

              DECLARE @ERROR_MSG NVARCHAR(MAX), @SEVERITY INT, @STATE INT
              SELECT @SEVERITY = ERROR_SEVERITY(), @STATE = ERROR_STATE()
              , @ERROR_MSG = ERROR_MESSAGE() + ' err src line: ' + CAST( ERROR_LINE() AS NVARCHAR(20)) + ' ' + ISNULL(ERROR_PROCEDURE(), '');           
               --@ERROR_MSG = ERROR_MESSAGE()
                ROLLBACK;
             -- RE-THROW EXCEPTION FOR DIAGNOSTIC VISIBILITY
              RAISERROR (@ERROR_MSG ,@SEVERITY, @STATE);        
              RETURN

    END CATCH   

END

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM