CREATE OR REPLACE
PROCEDURE POC_Ta00_Cust(Test IN VARCHAR2,
Report_Code IN VARCHAR2) IS
i NUMBER;
BEGIN
i := 0;
LOOP
i := i + 1;
IF i > Test THEN
EXIT;
END IF;
IF MOD(i, 20) = 0 THEN
INSERT INTO Ta00_Cust
(Cust_No,
Report_Branch_Code,
Disabled,
Cust_Type,
Cust_Type_Check,
Cust_Name,
Cust_Cert_Type,
CUST_CERT_TYPE_REPORT,
Cust_Cert_Type_Check,
Cust_Other_Cert_Type,
Cust_Cert_No,
Cert_Start_Date,
Cert_Mature_Date,
CUST_INDUSTRY,
Cust_Industry_Report,
Cust_Industry_Name,
Create_Org,
Create_Time,
Create_Teller,
CREATE_CHANNEL,
Cust_Manager_Org,
Cust_Cancle_Date,
CUST_STATUS,
Manager_No,
Manager_Name,
Aml_Type_Cd,
Update_Time,
Update_Teller,
Update_Org,
Cust_Tel,
Gender,
Other_Contact,
Cust_Country,
Cust_Born_Date,
Addr_Detail,
Unit_Addr,
Remark,
Data_Source,
Run_Date)
SELECT (100000000 + i) AS Cust_No,
Report_Code,
'0',
'C' AS Cust_Type,
'C' AS Cust_Type_Check,
substr(poc_Name(i), 2, 2) || poc_Name(i) || '股份有限责任公司',
'610099',
'610099',
'610099',
NULL AS Cust_Other_Cert_Type,
Decode(MOD(Trunc(Dbms_Random.Value(0, 1000000000)), 2),
1,
'8',
'9') ||
Round(Dbms_Random.value(10000000000000, 000000000000000), 0) ||
Dbms_Random.String('U', 1),
'2010-01-01',
'9999-12-31',
CASE MOD(Trunc(Dbms_Random.Value(0, 1000000000)), 10)
WHEN 1 THEN
'F5284'
WHEN 2 THEN
'Q8312'
WHEN 3 THEN
'Q8314'
WHEN 4 THEN
'G5410'
WHEN 5 THEN
'M7330'
WHEN 6 THEN
'C4210'
WHEN 7 THEN
'C3810'
WHEN 8 THEN
'F5211'
ELSE
'N7720'
END,
NULL AS Cust_Industry_Repor,
NULL AS Cust_Industry_Name,
'99999',
TO_CHAR(TO_DATE(2455198 + TRUNC(Dbms_Random.Value(0, 3650)),
'J'),'YYYY-MM-DD') AS Create_Time,
NULL AS Create_Teller,
NULL AS Create_Channel,
'99999',
'9999-12-31',
'1',
NULL AS Manager_No,
NULL AS Manager_Name,
NULL AS Aml_Type_Cd,
NULL AS Update_Time,
NULL AS Update_Teller,
NULL AS Update_Org,
1 || Round(Dbms_Random.Value(1000000000, 0000000000), 0) AS Cust_Tel,
NULL AS Gender,
NULL AS Other_Contact,
'CHN' Cust_Country,
NULL AS Cust_Born_DatE,
NULL AS Addr_Detail,
NULL AS Unit_Addr,
NULL AS Remark,
NULL AS Data_Source,
'2020-12-31' AS Run_Date
FROM Dual;
END IF;
IF MOD(i, 10000) = 0 THEN
COMMIT;
END IF;
END LOOP;
UPDATE Ta00_Cust
SET Cust_Industry_Report = Cust_Industry,
Cust_Industry_Name = Cust_Industry;
COMMIT;
END POC_Ta00_Cust;
看上去这是生成一组随机测试数据集。
里面大部分使用的oracle包及函数都可以找到mysql中的替代方式,但是poc_Name这个是你的自定义函数吧,这里面的逻辑也得转一个出来。
Dbms_Random是随机值,
trunc改成floor,
"||"改成用concat函数,
Decode改成case when,
Create_Time这个字段换一种写法,反正也是取随机,没必要完全按这个规则。
至于mysql的定义变量及循环结构,这个属于基础语法了,请自行查看相关基础教程