多次使用值(sysguid)在循环中插入SQL
我目前有以下脚本,用于将一些虚拟数据插入到我的一个表中进行测试。 我可以调用它并传递我想要的条目数。这很有效。 现在的问题是一些数据不起作用。 Crecord在所有三行12、17、19中应具有相同的值 有没有办法存档多次使用值(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
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不能使用括号-因此我必须从问题的示例中删除它们。我不确定我是否理解哪个括号,但是-如果你这么说&如果你让它工作了-很好,我很高兴你做到了!