【问题标题】:1064. You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'OUTPUT1064. 你的 SQL 语法有错误;查看与您的 MariaDB 服务器版本对应的手册,了解在 \'OUTPUT 附近使用的正确语法
【发布时间】:2022-12-12 22:35:45
【问题描述】:

我是 SQL 的新手,我收到此查询的错误:

Insert into admin.MaintenanceWindows (StartTime, StopTime, Message, Status, AccessibilityLabel) 

OUTPUT inserted.StartTime

values ('2022-12-17 03:47:00', '2022-12-18 03:47:00', 'Testdeclare', 'Scheduled', 'TEST');

我也试过

DECLARE @inserted table (StartTime int);

insert into admin.MaintenanceWindows (StartTime, StopTime, Message, Status, AccessibilityLabel) 
output inserted.StartTime into @inserted
values ('2022-12-17 03:47:00', '2022-12-18 03:47:00', 'Testdeclare', 'Scheduled', 'TEST');

select * from @inserted;

我得到错误:-声明无效以及输出无效

错误代码:1064。您的 SQL 语法有误;查看与您的 MariaDB 服务器版本对应的手册,了解在“OUTPUT inserted.StartTime values ('2022-12-17 03:47:00', '2022-12-18 03:47:00.. .' 在第 2 行

【问题讨论】:

  • 如果您以 MariaDB 为目标,为什么要使用 SQL Server 标签?这些是完全不同的产品。
  • 你确定是sql-server吗?
  • 这是标记为 sql-server,但你的标题和诗人谈论的是 MariaDB?
  • OUTPUT 是 SQL Server 的一项功能。 MariaDB 中的等效功能由 the RETURNING clause 提供
  • 数据库产品仅提供对 SQL 标准的基本支持。全部数据库具有在其他数据库中不起作用的自定义语法和功能。您不能只使用一种产品的语法在另一种产品中做同样的事情。在这种情况下,SQL Server 中的OUTPUT用于返回数据因操作而改变,例如触发器、默认值、AUTOINCREMENT 约束。在 MariaDB、PostgreSQL 和 Oracle 中,同样的事情是使用 RETURNING 完成的。 MySQL 根本没有这个特性

标签: sql mariadb


【解决方案1】:

不确定你试图通过输出项实现什么,但看起来正确的查询应该没有 OUTPUT inserted.StartTime

只是-

-- create
CREATE TABLE MaintenanceWindows (
  StartTime  DATETIME NOT NULL, 
  StopTime DATETIME NOT NULL,
  Message TEXT NOT NULL,
  Status TEXT NOT NULL,
  AccessibilityLabel TEXT NOT NULL
);

-- insert

INSERT INTO  MaintenanceWindows values ('2022-12-17 03:47:00', '2022-12-18 03:47:00', 'Testdeclare', 'Scheduled', 'TEST') RETURNING StartTime ;

以及真实在线编译器的结果(感谢https://onecompiler.com/)。 我将您的表从 admin.MaintenanceWindows 更改为 MaintenanceWindows。 如果您仍然有编译错误,则说明您的表或您尝试插入其中的数据有问题。

【讨论】:

  • 如果 OP 实际上想要返回修改后的数据,那将行不通。这就是 OUTPUT 在 SQL Server 中所做的
  • 好的,我添加了返回子句,基于不清楚它是否是原始含义的问题
  • 错误代码:1064。您的 SQL 语法有误;检查与您的 MariaDB 服务器版本对应的手册,了解在第 5 行的“RETURNING StartTime”附近使用的正确语法
  • @yadavenderyadav 请现在检查
猜你喜欢
  • 2017-02-14
  • 2018-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-05
  • 2021-08-06
  • 2018-08-28
  • 1970-01-01
相关资源
最近更新 更多