【问题标题】:Nested cursor, While Loop SQL嵌套游标,While Loop SQL
【发布时间】:2015-10-09 03:52:21
【问题描述】:

我正在尝试将数据插入两个表(在两个表上一次插入 100 到 150 行)。第一个表主键与第二个表外键有一个引用。我读到游标有问题,@@Fetch_Status 是全局变量。这是在两个表 Cursor 或 While Loop 或任何其他表中循环和执行数据插入的最佳方法。

CREATE TABLE Table1
(
FirstTablePK [int] NOT NULL, --Mannual Increment(Not Identity)
Description [varchar](100) NOT NULL,
CONSTRAINT PK_Table1 PRIMARY KEY CLUSTERED (FirstTablePK)
)

CREATE TABLE Table2
(
SecondTablePK [int] NOT NULL, --Mannual Increment(Not Identity)
FirstTablePK [int] NOT NULL, -- Foreign Key Reference with Table1
Description [varchar](100) NOT NULL,
CONSTRAINT PK_Table2 PRIMARY KEY CLUSTERED (SecondTablePK),
CONSTRAINT FK_Table1 FOREIGN KEY (FirstTablePK) REFERENCES Table1(FirstTablePK)
)

提前致谢。 哈里

【问题讨论】:

  • 几乎不可能回答这样的问题。请展示您的表结构、一些示例数据、您尝试达到的结果以及您迄今为止尝试过的内容。
  • 根据性能,while循环是最好的,而不是光标...
  • 嗨 Mureinik 我已经添加了表格结构。
  • 源表是什么,从哪两个表中插入数据?

标签: sql while-loop cursor sql-insert


【解决方案1】:

游标不常用于查找外键。使用基于集合的查询更快更容易:

insert  into SaleOrder
        (remarks, product_id, customer_id, ...)
select  'please deliver fast'
,       (select id from Products where name = 'Car Oil')
,       (select id from Customers where name = 'India Corp')
,       ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-18
    • 1970-01-01
    相关资源
    最近更新 更多