0
我正在尝试创建一个循环过程,以使用来自三个不同表的值填充x个不同值的表:FIRSTNAME,LASTNAME和LOCATION_DATA。不过,我不断收到错误:填充表的PL/SQL过程
Error(34,14): PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:
(begin case declare end exit for goto if loop mod null
pragma raise return select update while with <an identifier>
<a double-quoted delimited-identifier> <a bind variable> <<
continue close current delete fetch lock insert open rollback
savepoint set sql execute commit forall merge pipe purge.`
这是我到目前为止有:
CREATE OR REPLACE PROCEDURE LOOP_TEST
IS
FNLOOP int := 1;
LNLOOP int := 1;
LOCLOOP int := 1;
BEGIN
WHILE FNLoop <= (SELECT MAX(ID) FROM FIRSTNAME) LOOP
BEGIN
WHILE LNLoop <= (SELECT MAX(ID) FROM LASTNAME) LOOP
BEGIN
WHILE LOCLOOP <= (SELECT MAX(ID) FROM LOCATION_DATA) LOOP
BEGIN
SELECT
FirstName
, (SELECT LastName
FROM LASTNAME B
WHERE LNLOOP = B.ID)
, (SELECT City
FROM LOCATION_DATA C
WHERE LOCLOOP = C.ID)
, (SELECT State
FROM LOCATION_DATA C
WHERE LOCLOOP = C.ID)
INTO RANDOM_DATA
FROM FIRSTNAME A
WHERE FNLOOP = A.ID;
LOCLOOP := LOCLOOP + 1;
--WAITFOR DELAY '00:00:01'
END;
LNLOOP := LNLOOP + 1;
LOCLOOP := 1;
END LOOP;
FNLOOP := FNLOOP + 1;
LNLOOP := 1;
END LOOP;
END LOOP;
END LOOP_TEST;
预先感谢您。
这就是为什么我仔细格式化我的代码。不匹配的开始/结束,循环/结束循环等关键字跳出你。 –
你将遇到的下一个问题是,你不能像条件测试那样放置隐式游标('WHILE FNLoop <=(SELECT MAX(ID)FROM FIRSTNAME)'等等。变量需要使用'select进入'。之后的问题是你还没有声明你选择的'RANDOM_DATA'记录 –
我忘了提及我已经为RANDOM_DATA表添加了一个CREATE TABLE语句,这是不是一个足够的声明添加记录? –