尝试在 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 中插入多个值时如何修复语句结尾?的主要内容,如果未能解决你的问题,请参考以下文章