INSERT INTO archivetitles

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go





/****** Object:  Stored Procedure dbo.spOrdersInsert   ******/
ALTER  PROCEDURE [dbo].[spOrdersInsert]
(
    @CustomerID INT,
    @CartID     VARCHAR(
50),
    @Memo        VARCHAR(
2000),
    @OrderID    INT OUTPUT
)
AS

-- 確保數據的一致性, 因而起用事務
BEGIN TRAN OrdersInsert

/* 產生訂單 */
INSERT INTO Orders
(
    CustomerID,
    Memo
)
VALUES
(
    @CustomerID,
    @Memo
)

-- 返回當前所產生的OrderID
SELECT
    @OrderID 
= @@Identity    

/* 將當前用戶的當前購物車COPY到當前所產生的ORDER明細中*/
INSERT INTO OrdersDetail
(
    OrderID, 
    ProductID, 
    Quantity, 
    UnitCost
)
------------------------有問題呀?????

SELECT 
    @OrderID, 
    ShoppingCart.ProductID, 
    Quantity, 
    Products.UnitCost

FROM 
    ShoppingCart 
  INNER JOIN Products ON ShoppingCart.ProductID 
= Products.ProductID
  
WHERE 
    CartID 
= @CartID


COMMIT TRAN OrdersInsert

 

 

 

 

通過 INSERT FROM 查詢,可以將行從一個表複製到另一個表中或在同一個表內複製。例如,在 titles 表中,可以通過 INSERT FROM 查詢,將有關某個出版商所有書籍的信息都複製到另一個表中,並使該表可由該出版商使用。 INSERT FROM 查詢類似於生成表查詢,不同的是將行復制到現有的表中。

提示   還可以通過剪切和粘貼的方法,將行從一個表複製到另一個表中。有關詳細信息,請參見在結果窗格中添加新行。

創建 INSERT FROM 查詢時指定: 

將行復制到的數據庫表(目的表)。


從其中複製行的表(源表)。源表或表成爲子查詢的一部分。如果是在表內進行復制,則源表和目的表相同。


源表中要進行內容複製的列。


將數據複製到的目的表中的目標列。


定義要複製的行的搜索條件。


排序次序(如果要以特定的順序對行進行復制)。


"分組"選項(如果只對彙總信息進行復制)。 
例如,下面的查詢將書名信息從 titles 表複製到一個名爲 archivetitles 的存檔表中。該查詢對屬於某個出版商的所有書名的四列內容進行復制:

INSERT INTO archivetitles 
   (title_id, title, type, pub_id)
SELECT title_id, title, type, pub_id
FROM titles
WHERE (pub_id 
= '0766')
注意   若要將值插入到新行中,請使用 INSERT INTO 查詢。

可以對行中的選定列或所有列的內容進行復制。在任何一種情況下,所複製的數據都必須與要複製到的行中的列兼容。例如,如果複製某列(如 price 列)的內容,要複製到的行中的列必須接受帶小數位數的數字型數據。如果要對整行進行復制,則目的表必須具有和源表的物理位置相同的兼容列。

當創建 INSERT FROM 查詢時,網格窗格將更改以反映可用於複製數據的選項。添加了一個
"追加"列,以允許指定數據應複製到的列。

注意   不能撤消執行從中插入查詢的操作。作爲預防措施,請在執行 INSERT INTO 查詢前備份數據。

創建 INSERT FROM 查詢 

在查詢設計器窗口右擊,指向
"更改類型"菜單,然後選擇"從中插入"命令。


在爲 INSERT FROM 查詢選擇表對話框中,選擇將行復制到的表(目的表)。 
注意   查詢設計器無法事先確定可以更新哪些表和視圖。因此,在
"爲 INSERT FROM 查詢選擇表"對話框的"表名"列表中,將顯示出所查詢的數據連接中所有可用的表和視圖,甚至包括或許不能將行復制到的那些表和視圖。 

將要從中複製行的表(源表)添加到查詢中。有關詳細信息,請參見添加表。如果是在表內複製行,則可以將源表作爲目的表添加。
源表中的數據列出現在關係圖窗格的輸入窗口中。


在表示表或表結構化對象的矩形中,選擇要進行內容複製的列名。若要複製整行,請選擇
"*(所有列)"。 
查詢設計器將選擇的列添加到網格窗格的
""列中。

在網格窗格的
"追加"列中,在目的表中爲要複製的每列選擇一個目標列。如果要複製整行,則選擇表名.*。目的表中的各列必須與源表中的各列有相同(或兼容)的數據類型。


如果要以特定的順序對行進行復制,請指定排序次序。有關詳細信息,請參見對查詢結果排序。


"準則"列中輸入搜索條件以指定要複製的行。有關詳細信息,請參見指定搜索條件。
如果沒有指定搜索條件,則源表中的所有行都將被複制到目的表中。 
注意   當將要搜索的列添加到網格窗格時,查詢設計器也將該列添加到待複製列的列表中。如果要將某列作爲搜索條件但不對其進行復制,則在表示表或表結構化對象  的矩形中清除該列名旁邊的複選框。 

如果要複製彙總信息,請指定
"分組"選項。有關詳細信息,請參見彙總表中所有行的值。 
當執行 INSERT FROM 查詢時,結果窗格中將不報告任何結果。而是顯示一條消息指出已複製的行數。

 

 

下面的查詢將書名信息從 titles 表複製到一個名爲 archivetitles 的存檔表中。該查詢對屬於某個出版商的所有書名的四列內容進行復制:

INSERT INTO archivetitles
   (title_id, title, type, pub_id)
SELECT title_id, title, type, pub_id
FROM titles
WHERE (pub_id = '0766')

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章