文档首页 > > 工具指南> Migration Tool SQL语法迁移工具> Oracle语法迁移> DML> INSERT

INSERT

分享
更新时间: 2019/08/09 GMT+08:00

概述

Oracle INSERT语句用于将单个记录或多个记录插入到表中。

INSERT ALL

Oracle的INSERT ALL语句可通过单个INSERT语句向单个或多个表中插入多行。目标查询将转化为公用表表达式(CTE)。

图1 输入:INSERT ALL
图2 输出:INSERT ALL

  

INSERT FIRST

Oracle的INSERT FIRST语句用于在first条件为真时执行INSERT语句,而其他语句会被忽略。目标查询将转化为公用表表达式。

图3 输入:INSERT FIRST
图4 输出:INSERT FIRST

  

含有表别名的INSERT语句

Oracle表别名通过为查询中的表分配名称或代码,用于声明和提高可读性。INSERT with Alias可与INSERT INTO语句一起使用。Migration Tool可迁移含有表别名的INSERT INTO语句。

  • Blogic操作

    输入:含有表别名的INSERT语句

    CREATE
         OR REPLACE FUNCTION myfct RETURN VARCHAR2 IS res VARCHAR2 ( 200 ) ;
         BEGIN
              res := 100 ;
              INSERT INTO emp18 RW ( RW.empno ,RW.ename ) SELECT
                   res ,RWN.ename
              FROM
                   emp16 RWN ;
                   COMMIT ;
              RETURN res ;
    END ;
    /

    输出

    CREATE
         OR REPLACE FUNCTION myfct RETURN VARCHAR2 IS res VARCHAR2 ( 200 ) ;
         BEGIN
              res := 100 ;
              INSERT INTO emp18 ( empno ,ename ) SELECT
                   res ,RWN.ename
              FROM
                   emp16 RWN ;
                   /* COMMIT ; */
              null ;
              RETURN res ;
    END ;
    /
  • Bulk操作

    输入:含有表别名的INSERT语句

    INSERT
         INTO
              Public.emp14 ats (
                   ats.empno
                   ,ats.ename
              )
         VALUES (
              3
              ,'Categories'
         )
    ;

    输出

    INSERT
         INTO
              Public.emp14 (
                   empno
                   ,ename
              ) SELECT
                        3
                        ,'Categories'
    ;

    输入:含有表别名的INSERT语句

    INSERT
         INTO
              "abc" . "emp18" wmc (
                   wmc.empno
                   ,wmc.ename
              ) SELECT
                        wmc.empno
                        ,wm_concat (wmc.ename) AS eName
                   FROM
                        emp16 wmc
                   GROUP BY
                        empno
    ;

    输出

    INSERT
         INTO
              "abc" . "emp18" (
                   empno
                   ,ename
              ) SELECT
                        wmc.empno
                        ,STRING_AGG (
                             wmc.ename
                             ,','
                        ) AS eName
                   FROM
                        emp16 wmc
                   GROUP BY
                        empno
    ;

    输入:含有表别名的INSERT语句

    INSERT
         INTO
              emp14 "TABLE" (
                   "TABLE" .empno
                   ,ename
              ) SELECT
                        empno
                        ,ename
                   FROM
                        emp12
                   WHERE
                        emp12.salary > (
                             SELECT
                                       MAX( salary )
                                  FROM
                                       emp13 "TABLE"
                                  WHERE
                                       "TABLE" .empno > 5
                        )
    ;

    输出

    INSERT
         INTO
              emp14 (
                   empno
                   ,ename
              ) SELECT
                        empno
                        ,ename
                   FROM
                        emp12
                   WHERE
                        emp12.salary > (
                             SELECT
                                       MAX( salary )
                                  FROM
                                       emp13 "TABLE"
                                  WHERE
                                       "TABLE" .empno > 5
                        )
    ;

  

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区