【问题标题】:How to insert and view a date value by Native SQL?如何通过 Native SQL 插入和查看日期值?
【发布时间】:2012-12-17 09:52:59
【问题描述】:

我使用以下 ABAP 代码插入订单:

EXEC SQL.
    INSERT INTO order VALUES('1','17/12/2012') //order id,order date
ENDEXEC.

但是我遇到了运行时错误。我尝试将日期更改为SYSDATE

EXEC SQL.
    INSERT INTO order VALUES('1',SYSDATE)
ENDEXEC.

错误已修复,但当我尝试从订单表中选择订单日期时无法获得任何值。

DATA: oID(255).
DATA: oDate(255).
//select a order details where order id='1', and assign to oID,oDate
Write: /1 'Order date: ',oDate.
Write: /1 'Order ID: ',oID.

输出:

Order date: 
Order ID: 1

【问题讨论】:

  • 你为什么使用 NativeSQL 而不是 OpenSQL?使用 NativeSQL 的唯一原因是当您想要使用数据库后端独有的任何功能时,但您在这里所做的似乎非常通用。
  • 我明白你的意思,但是如何在 NativeSQL 中插入日期值?

标签: abap native-sql


【解决方案1】:

如果你想使用 Native SQL 来操作数据,你必须使用底层 DBMS 的原生 SQL 方言。如果您不知道这一点,则根本不应该使用 Native SQL。

【讨论】:

  • 即使你是对的,这些刻薄的 cmets 也不是特别有用,你不同意吗?
  • René:可能是修复了一些认为他们真的需要 Native SQL、GENERATE SUBROUTINE POOL 之类的东西太多的人留下的一些混乱的不可避免的副产品......对不起......跨度>
  • 我知道你的意思 - 我敢说大多数 ABAP 代码都是一团糟......?幸运的是,SO 有一些活跃的 ABAP 程序员,他们真正了解他们的东西 :)
  • @René:大多数 ABAP 代码是平均的,但使用不适当的技术通常会使大 fsckups 变得更糟。 “我不明白这个问题,所以我可能不得不使用我也不明白的陈述”或类似的东西......
【解决方案2】:

在变量前面加一个冒号(:):

EXEC SQL.
  INSERT INTO order VALUES('1', :sy-datum)
ENDEXEC.

【讨论】:

  • 对我来说一个有用的答案,我之前得到了这个答案。但无论如何,非常感谢;)
猜你喜欢
  • 2017-10-01
  • 2014-08-20
  • 2021-10-01
  • 2013-08-03
  • 1970-01-01
  • 1970-01-01
  • 2015-02-22
  • 1970-01-01
  • 2013-10-17
相关资源
最近更新 更多