尝试在 SQL 中插入多个值时如何修复语句结尾?

Posted

技术标签:

【中文标题】尝试在 SQL 中插入多个值时如何修复语句结尾?【英文标题】:How to fix end of statement when trying to insert multiple values in SQL? 【发布时间】:2020-05-29 00:38:05 【问题描述】:

我刚刚开始了一个使用 Access 2016 处理 SQL 的数据库课程。我收到了 End of statement 错误,我不确定如何修复它。

我的表代码是`

Create Table Pet_Owner (
OwnerID autoincrement Null,
OwnerLastName Char(30) Not Null,
OwnerFirstName Char(30) Not Null,
OwnerPhone Int Null,
OwnerEmail VarChar(100) Not Null Unique,
Constraint Pet_Owner_PK Primary Key(OwnerID)
);

到目前为止,我尝试添加的插入查询是

Insert Into Pet_Owner (OwnerLastName, OwnerFirstName, OwnerPhone, OwnerEmail) Values (
'Downs' , 'Marsha' , '555-537-8765' , 'Marsha.downs@somewhere.com') 
Into Pet_Owner (OwnerLastName, OwnerFirstName, OwnerPhone, OwnerEmail) Values (
'James' , 'Richard' , '555-537-7654' , 'Richard.James@somewhere.com') 
Insert Into Pet_Owner (OwnerLastName, OwnerFirstName, OwnerPhone, OwnerEmail) Values (
'Frier' , 'Liz' , '555-537-6543' , 'Liz.Frier@somewhere.com') 
Insert Into Pet_Owner (OwnerLastName, OwnerFirstName, OwnerEmail) Values (
'Trent', 'Miles', 'Miles.Trent@somewhere.com') ;

当我使用追加时,它表示我在第一组值的末尾缺少一个分号,但如果我添加它,那么它说我在我的语句末尾有字符。如果有人可以帮助我或指出我正确的方向来解决错误,我将不胜感激。谢谢

【问题讨论】:

@GordonLinoff,Access 确实支持 AUTOINCREMENT type。 为什么将OwnerPhone 声明为数字数据类型?文本数据类型会更合适。 【参考方案1】:

您的插入查询包括 4 个INSERT ... VALUES 语句。因此,当您尝试运行该查询时,您是在要求 Access 执行一批语句。但是 Access 不会执行批处理语句。您必须单独执行它们。

当你一次执行它们时,你会发现另外两个问题:

    OwnerPhone Int Null 将不接受诸如“555-537-8765”之类的文本值;将其设为文本而不是数字类型字段。

    第二个插入语句不包含INTO关键字。

我使用这个语句来创建表:

Create Table Pet_Owner (
OwnerID autoincrement Primary Key,
OwnerLastName Char(30) Not Null,
OwnerFirstName Char(30) Not Null,
OwnerPhone VarChar(12) Null,
OwnerEmail VarChar(100) Not Null Unique
);

OwnerPhone 是关键更改。我更改了主键分配只是为了向您展示一种不同的方法。)

然后分别处理每个插入语句,将其加载到变量strInsert 中,并像这样执行它:

CurrentDb.Execute strInsert, dbFailOnError

这种方法成功地将 4 行添加到 Pet_Owner 表中。

【讨论】:

感谢您的解释,因为这是我第一次。这花了更长的时间,但将它们分开是有效的。再次感谢您。 不客气。很遗憾,错误消息没有为您提供更好的问题解释。【参考方案2】:

您需要以insert into 开始每个语句,并用; 分隔它们。

Insert Into Pet_Owner (OwnerLastName, OwnerFirstName, OwnerPhone, OwnerEmail)
Values ('Downs' , 'Marsha' , '555-537-8765' , 'Marsha.downs@somewhere.com');

Insert Into Pet_Owner (OwnerLastName, OwnerFirstName, OwnerPhone, OwnerEmail) 
Values ('James' , 'Richard' , '555-537-7654' , 'Richard.James@somewhere.com');

Insert Into Pet_Owner (OwnerLastName, OwnerFirstName, OwnerPhone, OwnerEmail)
Values ('Frier' , 'Liz' , '555-537-6543' , 'Liz.Frier@somewhere.com');

Insert Into Pet_Owner (OwnerLastName, OwnerFirstName, OwnerEmail) 
Values ('Trent', 'Miles', 'Miles.Trent@somewhere.com');

【讨论】:

以上是关于尝试在 SQL 中插入多个值时如何修复语句结尾?的主要内容,如果未能解决你的问题,请参考以下文章

如果我分批发送许多值,如何在插入语句中发送重复值时使用异常处理?

sql 请教update语句in多个值时,进行多次更新

如何修复返回 -1 的 Select 语句

仅使用在 TOAD 中执行来运行多个 sql 语句

如何插入多个insert sql语句

如何在不同条件的sql server的case语句中插入多个else?