【发布时间】:2016-10-10 22:59:01
【问题描述】:
我有以下 SQL 脚本来使用 PL/SQL 用随机数据填充“Billings”表:
DECLARE
dgStartDate DATE;
dgEndDate DATE;
dgRandomDate DATE;
FUNCTION getRandomDate(pStartDate IN DATE, pEndDate IN DATE) RETURN DATE
IS
dRandomDate DATE;
piStartNumber PLS_INTEGER;
piEndNumber PLS_INTEGER;
BEGIN
piStartNumber := TO_NUMBER(TO_CHAR(pStartDate, 'J'));
piEndNumber := TO_NUMBER(TO_CHAR(pEndDate, 'J'));
dRandomDate := TO_DATE(TRUNC(DBMS_RANDOM.VALUE(piStartNumber, piEndNumber)), 'J');
RETURN dRandomDate;
END;
BEGIN
dgStartDate := TO_DATE('01/01/2012', 'DD/MM/YYYY');
dgEndDate := TO_DATE('31/12/2015', 'DD/MM/YYYY');
dgRandomDate := getRandomDate(dgStartDate, dgEndDate);
FOR loop_counter IN 1..28 LOOP
INSERT INTO billings(id_billing, id_account, total_billing, due_billing)
VALUES (loop_counter, '123456', round(DBMS_RANDOM.VALUE(0,2000),2), TO_CHAR(dRandomDate, 'DD/MM/YYYY'));
END LOOP;
COMMIT;
END;
我收到以下错误:
ORA-06550: line 45, column 76:
PL/SQL: ORA-00984: column not allowed here
ORA-06550: line 44, column 1:
PL/SQL: SQL Statement ignored
错误在 INSERT 语句中的日期部分,但日期函数返回正确的值。我不知道如何让它工作。
提前致谢
【问题讨论】:
-
看起来我们有不同的行号,哪一行是44?
标签: sql oracle date plsql insert