1

我的 DataTable 中的数据就像

ID ContactName1  Designation1 ContactName2 Designation2
1  A             dummy        B            sam 

我的表的表结构是

ID ContactName Designation

我将存储过程中的值传递为:

@ContactName1
@Designation1

@ContactName2
@Designation2

我想要一个插入语句来插入记录。

我怎样才能做到这一点?

4

3 回答 3

2

假设您的 ID 主键设置为自动递增,并且您的表具有三个字段:

INSERT INTO DataTable (ContactName, Designation) VALUES 
    (@ContactName1, @Designation1), 
    (@ContactName2, @Designation2);

根据实际 ID,如果您没有自动增量,从 Ivan 的回复的评论来看,您没有,您实际上可以使用 MAX() 语句获取它:

SELECT MAX(ID) AS max_id FROM DataTable
于 2009-01-14T07:41:52.960 回答
1

既然它在一个存储过程中,你为什么要关心它是一个还是两个 INSERT 语句?显然,两个陈述是微不足道的。

一些 DBMS 允许您在单个 INSERT 中列出多个值子句(@Ivan 建议这样做):

INSERT INTO Table(ID, ContactName, Designation)
    VALUES(1, @ContactName1, @Designation1)
    VALUES(1, @ContactName2, @Designation2);

我不确定值列表之间是否需要逗号。我也不清楚是否允许 Table 中的两条记录具有相同的 ID,也不清楚 ID 是如何确定的——这可能是一些自动增量的东西,不同的 DBMS 也有不同的做法。

如果您的 DBMS 不支持单个 INSERT 语句中的多个 VALUES 子句,那么您最好接受两个 INSERT 语句。如果原子性是一个问题,您可以考虑事务 - 尽管如果这只是更大事务的一部分,特别是错误时的 ROLLBACK 将是一个问题。如果您的 DBMS 支持 SAVEPOINTS,则该过程可以在进入时建立一个保存点,并在退出时提交或回滚到该保存点。

于 2009-01-14T07:41:53.740 回答
0

INSERT INTO TABLENAME VALUES(根据数字和顺序给出值,以逗号分隔)

前任:-

INSERT INTO TABLENAME VALUES(1,'INDIA')

这里有两列 SN 和国家

于 2009-01-17T06:53:36.063 回答