zoukankan      html  css  js  c++  java
  • PetShop中为什么不用存储过程,而使用动态SQL??效率高?安全?

    今天在看PetShop 4.0的代码,发现它在Insert订单父子表时.使用动态SQL来Inert.不用存储过程也不用事务(当然使用的隐形事务).代码如下:
    EXEC sp_executesql 
    N
    'Declare @ID int; Declare @ERR int; 
    INSERT INTO Orders VALUES(@UserId, @Date, @ShipAddress1, @ShipAddress2, @ShipCity, 
                  @ShipState, @ShipZip, @ShipCountry, @BillAddress1, @BillAddress2, 
                  @BillCity, @BillState, @BillZip, @BillCountry, 
    ''UPS''
                  @Total, @BillFirstName, @BillLastName, @ShipFirstName, 
                  @ShipLastName, @AuthorizationNumber, 
    ''US_en''); 
    SELECT @ID=@@IDENTITY; 
    INSERT INTO OrderStatus VALUES(@ID, @ID, GetDate(), 
    ''P''); 
    SELECT @ERR=@@ERROR;
    INSERT INTO LineItem VALUES(  @ID, @LineNumber0, @ItemId0, @Quantity0, @Price0); 
    SELECT @ERR=@ERR+@@ERROR;
    INSERT INTO LineItem VALUES(  @ID, @LineNumber1, @ItemId1, @Quantity1, @Price1); 
    SELECT @ERR=@ERR+@@ERROR;SELECT @ID, @ERR
    ',
     N
    '@UserId varchar(80),@Date datetime,@ShipAddress1 varchar(80),@ShipAddress2 varchar(80),
    @ShipCity varchar(80),@ShipState varchar(80),@ShipZip varchar(50),@ShipCountry varchar(50),
    @BillAddress1 varchar(80),@BillAddress2 varchar(80),@BillCity varchar(80),
    @BillState varchar(80),@BillZip varchar(50),@BillCountry varchar(50),@Total decimal(7,2),
    @BillFirstName varchar(80),@BillLastName varchar(80),@ShipFirstName varchar(80),
    @ShipLastName varchar(80),@AuthorizationNumber int,@LineNumber0 int,@ItemId0 varchar(10),
    @Quantity0 int,@Price0 decimal(4,2),@LineNumber1 int,@ItemId1 varchar(10),@Quantity1 int,
    @Price1 decimal(4,2)
    ',
     
    @UserId = 'tony'@Date = '06 13 2008  4:07:24:220PM'@ShipAddress1 = 'aaa'
    @ShipAddress2 = 'aaa'@ShipCity = 'asdfasdf'@ShipState = 'CA'@ShipZip = '11111'
    @ShipCountry = 'USA'@BillAddress1 = 'aaa'@BillAddress2 = 'aaa'
    @BillCity = 'asdfasdf'@BillState = 'CA'@BillZip = '11111'@BillCountry = 'USA'
    @Total = 36400.00@BillFirstName = 'aa'@BillLastName = 'aa'@ShipFirstName = 'aa'
    @ShipLastName = 'aa'@AuthorizationNumber = 1534391807@LineNumber0 = 1
    @ItemId0 = 'EST-4'@Quantity0 = 1000@Price0 = 17.50@LineNumber1 = 2
    @ItemId1 = 'EST-5'@Quantity1 = 1000@Price1 = 18.90

    想问一下.为什么要这样做.这样做的好处....谢谢!
  • 相关阅读:
    hdu 1535 Invitation Cards(spfa)
    hdu 1317 XYZZY
    hdu 1245 Saving James Bond
    hdu 1546 Idiomatic Phrases Game
    hdu 1217 Arbitrage(佛洛依德)
    hdu 1599 find the mincost route(无向图的最小环)
    poj1579
    poj1905
    poj1384
    poj3624
  • 原文地址:https://www.cnblogs.com/tonyepaper/p/1220912.html
Copyright © 2011-2022 走看看