如何在动态SQL中使用sysdate(包括时间戳)更新日期列

学习Oracle
    CREATE OR REPLACE PROCEDURE TESTPROC
IS
   l_update_str   VARCHAR2 (4000);
BEGIN
   l_update_str :=
      'UPDATE XX_TABLE 
             last_update_date = ''' || SYSDATE || ''',
       WHERE     1=1';

   EXECUTE IMMEDIATE l_update_str;
END;
/

我已经在上面尝试过了,但是没有用。我也尝试过使用to_date(to_char(sysate)),但是缺少时间戳

拉利特·库马尔(Lalit Kumar B)

我也尝试过使用to_date(to_char(sysate)),但是缺少时间戳

这样做是没有意义的。

为什么要使用PL / SQL这样琐碎的任务。用普通的SQL来做。UPDATE语句的简单语法是-

UPDATE table_name SET column_name = SYSDATE WHERE <conditions>

要显示日期列,只需将TO_CHAR与正确的FORMAT MODEL一起使用即可

SELECT TO_CHAR(column_name, 'MM/DD/YYYY HH24:MI:SS') FROM table_name;

例如,

SQL> create table t(a date);

Table created.

SQL> insert into t values(sysdate - 10);

1 row created.

SQL> select * from t;

A
---------
25-JAN-15

SQL> update t set a = sysdate;

1 row updated.

SQL> select to_char(a, 'mm/dd/yyyy hh24:mi:ss') dt from t;

DT
-------------------
02/04/2015 11:29:21

SQL>

有关动态SQL的更新

'UPDATE XX_TABLE last_update_date ='''|| SYSDATE || ''',WHERE 1 = 1';

  • 首先,更新语法错误。SET关键字缺少。
  • 其次,您不能像在动态SQL中那样使用SYSDATE。

    由于您正在形成动态sql,因此sysdate值将附加到SQL。测试任何动态sql的最佳方法是使用DBMS_OUTPUT并查看动态SQL的格式是否正确。

例如,

SQL> CREATE OR REPLACE
  2  PROCEDURE TESTPROC
  3  IS
  4    l_update_str VARCHAR2 (4000);
  5  BEGIN
  6    l_update_str := 'UPDATE t
  7  SET a = ' || SYSDATE;
  8    --EXECUTE IMMEDIATE l_update_str;
  9
 10    DBMS_OUTPUT.PUT_LINE(l_update_str);
 11  END;
 12  /

Procedure created.

SQL> exec testproc;
UPDATE t
SET a = 02/04/2015 11:46:53

PL/SQL procedure successfully completed.

SQL>

那么,您看到形成了SQL吗?附加了SYSDATE值,而不是实际使用关键字SYSDATE

因此,您需要稍微更改动态sql。

SQL> CREATE OR REPLACE
  2  PROCEDURE TESTPROC
  3  IS
  4    l_update_str VARCHAR2 (4000);
  5  BEGIN
  6    l_update_str := 'UPDATE t
  7  SET a = SYSDATE';
  8    --EXECUTE IMMEDIATE l_update_str;
  9
 10    DBMS_OUTPUT.PUT_LINE(l_update_str);
 11  END;
 12  /

Procedure created.

SQL> exec testproc;
UPDATE t
SET a = SYSDATE

PL/SQL procedure successfully completed.

SQL>

现在上面的工作正常。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在动态SQL中使用sysdate(包括时间戳)更新日期列

来自分类Dev

根据间隔使用sysdate更新日期列

来自分类Dev

如何在sql中更新日期

来自分类Dev

如何在sqlite中使用当前日期时间更新现有表的日期时间列

来自分类Dev

如何理解给定的sysdate是日期或时间戳

来自分类Dev

如何理解给定的sysdate是日期或时间戳

来自分类Dev

如何在Oracle SQL中获取日期列的时间戳?

来自分类Dev

SQL中的批量更新日期时间列

来自分类Dev

如何在每个新条目中包括日期/时间戳?

来自分类Dev

如何在每个新条目中包括日期/时间戳?

来自分类Dev

更新日期时间时间戳分钟值

来自分类Dev

腌制后是否更新日期时间时间戳?

来自分类Dev

SQL更新日期时间条目

来自分类Dev

如何在SQL中使用最新的日期时间

来自分类Dev

如何在Primefaces中使用当前时间戳获取选定日期?

来自分类Dev

在 Scala 中使用日期时间/时间戳

来自分类Dev

如何在WPF中更新日期

来自分类Dev

如何在Oracle中使用日期更新列?

来自分类Dev

如何在Julia中使用日期时间?

来自分类Dev

如何在Django中使用日期时间过滤日期时间?

来自分类Dev

如何在纯SQL中使用Apache Phoenix提升时间戳

来自分类Dev

更新日期主题的时间

来自分类Dev

SQL Server数据库的最后更新日期时间

来自分类Dev

在SQL数据库中插入并更新日期时间

来自分类Dev

如何在Python中使用Javascript + Date()数字时间戳?

来自分类Dev

如何在Ping中使用时间戳选项

来自分类Dev

如何在MarkLogic中使用XQuery创建UTC时间戳?

来自分类Dev

如何在Redshift中使用GMT时区转换时间戳?

来自分类Dev

如何在规格rpm中使用时间戳?

Related 相关文章

热门标签

归档