在编写PL/SQL块时,我得到如下所示的错误。请告诉我这个错误的原因?
DECLARE
TYPE TABLE_NAME IS VARRAY(17) OF VARCHAR(255);
TABLENAME TABLE_NAME;
TOTAL INTEGER;
BEGIN
TABLENAME := TABLE_NAME ('FA_AS_ASSIGNMENTS','FA_PE_PHONES' );
TOTAL := TABLENAME.COUNT;
FOR i IN 1 .. TOTAL
LOOP
INSERT
INTO CUSTOM_ODILOAD_TABLE_COUNT
(
TABLE_NAME,
ROW_COUNT
)
VALUES
(
TABLENAME(i),
(SELECT COUNT(*) FROM TABLENAME(i)
)
);
END LOOP;
END;
错误:
SQL 06550:第19行,第40列:PL/
:ORA-00907:缺少右括号
ORA- 06550 :第10行,第5列: PL/ SQL : SQL语句忽略06550。00000 -
行%s,列%s:\n%s
*原因:通常是PL/SQL编译错误。
*操作:匿名阻止已完成
发布于 2019-01-03 02:17:00
静态查询不能有动态表名(即表名不能参数化):
DECLARE
TYPE TABLE_NAME IS VARRAY(17) OF VARCHAR(255);
TABLENAME TABLE_NAME;
TOTAL INTEGER;
cnt INTEGER;
BEGIN
TABLENAME := TABLE_NAME ('FA_AS_ASSIGNMENTS','FA_PE_PHONES' );
TOTAL := TABLENAME.COUNT;
FOR i IN 1 .. TOTAL
LOOP
EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM ' || TABLENAME(i) INTO cnt;
INSERT INTO CUSTOM_ODILOAD_TABLE_COUNT (TABLE_NAME, ROW_COUNT)
VALUES ( TABLENAME(i), cnt);
END LOOP;
END;
https://stackoverflow.com/questions/54011123
复制相似问题