多次使用值(sysguid)在循环中插入SQL

多次使用值(sysguid)在循环中插入SQL,sql,plsql,sql-insert,Sql,Plsql,Sql Insert,我目前有以下脚本,用于将一些虚拟数据插入到我的一个表中进行测试。 我可以调用它并传递我想要的条目数。这很有效。 现在的问题是一些数据不起作用。 Crecord在所有三行12、17、19中应具有相同的值 有没有办法存档 WHENEVER SQLERROR EXIT PROMPT inserting INSERT INTO MySchema.MyTable (MYRECORD, TMSTAMP, SHORTRECORD, CRecordID) ( SELECT '<MYRECO

我目前有以下脚本,用于将一些虚拟数据插入到我的一个表中进行测试。 我可以调用它并传递我想要的条目数。这很有效。 现在的问题是一些数据不起作用。 Crecord在所有三行12、17、19中应具有相同的值

有没有办法存档

WHENEVER SQLERROR EXIT
PROMPT inserting

INSERT INTO MySchema.MyTable (MYRECORD, TMSTAMP, SHORTRECORD, CRecordID) (
SELECT 
      '<MYRECORD>
              <TimeStamp>'||TO_CHAR(SYSDATE,'DD.MM.YY')||' '||to_char(to_date('2000-01-01', 'yyyy-mm-dd')+dbms_random.value(1,1000), 'HH24:MI:SS')||'</TimeStamp>
              <User>Test_User_1</User>
              <Application>Application1</Application>
              <Action>Dummy action text</Action>
              <INFO>dummy info text</INFO>
              <CRecordID>'||'CID_'||sys_guid()||'</CRecordID>  -- line 12
      </MYRECORD>', 
      to_date(SYSDATE,'DD.MM.YY'),
      '<SHORTRECORD>
            <User>Test_User_1</User>
            <CRecordID>'||'CID_'||sys_guid()||'</CRecordID>    -- line 17
      </SHORTRECORD>',
      'CID_'||sys_guid()                                       -- line 19
FROM DUAL connect by level <= &1
);

COMMIT;

PROMPT inserting done
注意:数据库是Oracle DB。

例如,使用CTE单独选择SYS\u GUID,如我的示例中所示,并将其值与列连接起来,我使用L12和L17来指示您提到的第12行和第17行

SQL> with gujda as
  2    (select sys_guid() guj
  3     from dual
  4     connect by level <= 4
  5    )
  6  select 'L12_' || g.guj l12,
  7         'L17_' || g.guj l17
  8  from gujda g;

L12                                  L17
------------------------------------ ------------------------------------
L12_EFB5A4947D2E4B7BBE6017E57C673ABF L17_EFB5A4947D2E4B7BBE6017E57C673ABF
L12_3E2D5B50D7C44C7FA6073A9F739687CF L17_3E2D5B50D7C44C7FA6073A9F739687CF
L12_724C21F7914B423B8CBDDC6A44AD2016 L17_724C21F7914B423B8CBDDC6A44AD2016
L12_F15D6C9865424E5C8FFFEA9C09DD6D37 L17_F15D6C9865424E5C8FFFEA9C09DD6D37

SQL>
例如,使用CTE单独选择SYS_GUID,如我的示例中所示,并将其值与我使用的L12和L17列连接起来,以指示您提到的第12行和第17行

SQL> with gujda as
  2    (select sys_guid() guj
  3     from dual
  4     connect by level <= 4
  5    )
  6  select 'L12_' || g.guj l12,
  7         'L17_' || g.guj l17
  8  from gujda g;

L12                                  L17
------------------------------------ ------------------------------------
L12_EFB5A4947D2E4B7BBE6017E57C673ABF L17_EFB5A4947D2E4B7BBE6017E57C673ABF
L12_3E2D5B50D7C44C7FA6073A9F739687CF L17_3E2D5B50D7C44C7FA6073A9F739687CF
L12_724C21F7914B423B8CBDDC6A44AD2016 L17_724C21F7914B423B8CBDDC6A44AD2016
L12_F15D6C9865424E5C8FFFEA9C09DD6D37 L17_F15D6C9865424E5C8FFFEA9C09DD6D37

SQL>

无关:我宁愿使用truncsystate而不是to_dateSYSDATE,'DD.MM.YY';将_DATE函数应用于SYSDATE是一种愚蠢的做法,它会返回日期数据类型。无关:我宁愿使用truncsydate而不是_dateSYSDATE,'DD.MM.YY';将_DATE函数应用于SYSDATE(返回日期数据类型)有点愚蠢。请注意:WITH不使用括号-因此我必须从我的问题示例中删除它们。我不确定我是否理解哪个括号,但是-如果你这么说&如果你让它工作了-很好,我很高兴你这么做了!请注意:WITH不能使用括号-因此我必须从问题的示例中删除它们。我不确定我是否理解哪个括号,但是-如果你这么说&如果你让它工作了-很好,我很高兴你做到了!