首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >接收执行PL/SQL块的错误右括号丢失错误

接收执行PL/SQL块的错误右括号丢失错误
EN

Stack Overflow用户
提问于 2019-01-03 02:07:41
回答 1查看 57关注 0票数 0

在编写PL/SQL块时,我得到如下所示的错误。请告诉我这个错误的原因?

代码语言:javascript
复制
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编译错误。

*操作:匿名阻止已完成

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-03 02:17:00

静态查询不能有动态表名(即表名不能参数化):

代码语言:javascript
复制
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;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54011123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档