代码之家  ›  专栏  ›  技术社区  ›  PaulEdison

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

  •  0
  • PaulEdison  · 技术社区  · 7 年前

    我目前有以下脚本,用于将一些虚拟数据插入到我的一个表中进行测试。
    我可以调用它并传递我想要的条目数。效果不错。
    现在的问题是有些数据不起作用。
    这个 CRecordID 所有三行(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数据库。

    1 回复  |  直到 7 年前
        1
  •  3
  •   Littlefoot    7 年前

    选择 SYS_GUID() 分别(例如,使用CTE,如我的示例所示)并将其值与列连接(我使用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>