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')

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值