关于ORACLE存储过程的问题,如何解决?

DECLARE 
   i NUMBER := 101;
   yn NUMBER;
   xn NUMBER;
   customs DBMS_SQL.VARCHAR2S := DBMS_SQL.VARCHAR2S(
      '会展海关', '保税区海关', '保税区海关', '其他2211',
      '其他2214', '其他2242', '吴淞海关', '嘉定海关',
      '嘉定海关', '外港海关', '奉贤海关', '奉贤海关',
      '宝山海关', '崇明海关', '徐汇海关', '杨浦海关',
      '松江海关', '松江海关', '松江海关', '洋山海关',
      '洋山海关', '洋山海关', '洋山海关', '浦东机场海关',
      '浦东机场海关', '浦东机场海关', '浦东机场海关', '浦东海关',
      '浦东海关', '浦东海关', '浦江海关', '浦江海关',
      '浦江海关', '浦江海关', '科创海关', '莘庄海关',
      '莘庄海关', '莘庄海关', '虹口海关', '虹桥机场海关',
      '车站海关', '车站海关', '车站海关', '邮局海关',
      '金山海关', '金山海关', '钻交所海关'
   );
   ports DBMS_SQL.VARCHAR2S := DBMS_SQL.VARCHAR2S(
      '沪会展关', '外高桥关', '保税物流', '卢湾监管',
      '漕河泾发', '沪业二处', '吴淞海关', '嘉定海关',
      '嘉定出口', '外港海关', '奉贤海关', '奉贤综保',
      '宝山海关', '崇明海关', '沪徐汇关', '沪杨浦关',
      '松江综B', '松江海关', '松江综A', '洋山港区',
      '洋山芦潮', '洋山海关', '洋山特综', '上海快件',
      '沪空港办', '浦东机场', '浦机综保', '金桥综保',
      '浦东海关', '沪金桥办', '洋山市内', '航交办',
      '浦江海关', '贸易网点', '沪科创关', '虹桥B保',
      '莘庄海关', '闵开发区', '沪虹口关', '虹桥机场',
      '车站海关', '西北物流', '普陀区站', '邮局海关',
      '金山海关', '沪化工区', '沪钻交所'
   );
BEGIN
   WHILE i <= 102 LOOP
      yn := ROUND(DBMS_RANDOM.VALUE(0,1));  -- 0 或 1 随机数
      INSERT INTO "DW_TGSX"."DW_TRADE_ENTRY_DETAIL" VALUES (
            i, 
            'I', 
            '1', 
            '1', 
            '1', 
            '1', 
            '2', 
            '2237', 
            '浦东机场海关', 
            '浦机综保', 
            '2245', 
            '22', 
            '1', 
            '1', 
            '1', 
            '1', 
            '1', 
            '1', 
            '1', 
            '1', 
            '1', 
            '1', 
            '1', 
            CASE WHEN yn = 1 THEN 'Y' ELSE 'N' END, 
            TO_DATE('2023-04-28 16:20:54', 'YYYY-MM-DD HH24:MI:SS'), 
            TO_DATE('2023-04-27 16:26:57', 'YYYY-MM-DD HH24:MI:SS'), 
            '1', 
            NULL, 
            '1', 
            '1', 
            '1', 
            '1', 
            CASE WHEN yn = 1 THEN 'Y' ELSE 'N' END, 
            '1', 
            '1', 
            '1', 
            '1', 
            CASE WHEN yn = 1 THEN 'Y' ELSE 'N' END, 
            CASE WHEN yn = 1 THEN 'Y' ELSE 'N' END, 
            CASE WHEN yn = 1 THEN 'Y' ELSE 'N' END, 
            CASE WHEN yn = 1 THEN 'Y' ELSE 'N' END, 
            CASE WHEN yn = 1 THEN 'Y' ELSE 'N' END, 
            '1',
            CASE WHEN yn = 1 THEN 'Y' ELSE 'N' END, 
            CASE WHEN yn = 1 THEN 'Y' ELSE 'N' END, 
            CASE WHEN yn = 1 THEN 'Y' ELSE 'N' END, 
            TO_DATE('2023-04-13 16:23:27', 'YYYY-MM-DD HH24:MI:SS'), 
            TO_DATE('2023-04-13 16:26:26', 'YYYY-MM-DD HH24:MI:SS'),
            CASE WHEN yn = 1 THEN 'Y' ELSE 'N' END, 
            CASE WHEN yn = 1 THEN 'Y' ELSE 'N' END, 
            CASE WHEN yn = 1 THEN 'Y' ELSE 'N' END, 
            CASE WHEN yn = 1 THEN 'Y' ELSE 'N' END, 
            CASE WHEN yn = 1 THEN 'Y' ELSE 'N' END, 
            '5', 
            CASE WHEN yn = 1 THEN 'Y' ELSE 'N' END, 
            CASE WHEN yn = 1 THEN 'Y' ELSE 'N' END, 
            CASE WHEN yn = 1 THEN 'Y' ELSE 'N' END, 
            CASE WHEN yn = 1 THEN 'Y' ELSE 'N' END, 
            CASE WHEN yn = 1 THEN 'Y' ELSE 'N' END, 
            CASE WHEN yn = 1 THEN 'Y' ELSE 'N' END, 
            CASE WHEN yn = 1 THEN 'Y' ELSE 'N' END, 
            CASE WHEN yn = 1 THEN 'Y' ELSE 'N' END, 
            CASE WHEN yn = 1 THEN 'Y' ELSE 'N' END, 
            CASE WHEN yn = 1 THEN 'Y' ELSE 'N' END, 
            CASE WHEN yn = 1 THEN 'Y' ELSE 'N' END, 
            CASE WHEN yn = 1 THEN 'Y' ELSE 'N' END, 
            TO_TIMESTAMP(' 2023-04-28 16:24:26:000000', 'YYYY-MM-DD HH24:MI:SS:FF6'), 
            TO_TIMESTAMP(' 2023-04-28 16:24:30:000000', 'YYYY-MM-DD HH24:MI:SS:FF6')
      );
      i := i + 1;
   END LOOP;
END;


执行该SQL报错```



```END;
[Err] ORA-06550: line 6, column 7:
PLS-00681: named association syntax is required
ORA-06550: line 5, column 12:
PL/SQL: Item ignored
ORA-06550: line 20, column 7:
PLS-00681: named association syntax is required
ORA-06550: line 19, column 10:
PL/SQL: Item ignored

求分析

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/1066486
  • 你也可以参考下这篇文章:数据库ORACLE中如何查看一个表是否是分区表呢?
  • 除此之外, 这篇博客: ORACLE 监控数据增长量中的 创建存储过程,提供采集数据的方法 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • –PROCEUDRE 1
    注意:如果存储过程创建是失效状态,请给创建者赋予 select any dictionary 的权限
    grant select any dictionary to user_name;

    create or replace procedure data_monitor is
      v_1  number;
      v_2   varchar2(12);
      v_3   varchar2(3);
    begin
      select trunc((sum(bytes) / 1024 / 1024 / 1024), 3)
        into v_1
        from dba_segments;
      select '''' || to_char(sysdate, 'yyyy-mm-dd') || '''',
             'H' || to_char(sysdate, 'hh24')
        into v_2, v_3
        from dual;
      execute immediate 'update data_growth_log set ' || v_3 || '=' || v_1 ||
                        ' where cdate= ' || v_2;
      commit;
    end;
    

    –PROCEUDRE 2

    create or replace procedure data_in is
      v_1 varchar2(10);
         begin
           select to_char(sysdate+1,'yyyy-mm-dd') into v_1 from dual;
           dbms_output.put_line(v_1);
           execute immediate 'insert into data_growth_log(cdate) values(:p1)' using v_1;
         commit;
         end;
    
  • 您还可以看一下 黄浩老师的窥探ORACLE执行计划中的小秘密课程中的 残缺的执行计划小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    由于问题较为笼统,无法确定具体的ORACLE存储过程问题,因此无法给出具体的解决方案。建议提供更加具体的问题描述和错误提示信息,以便获得更加精准的解决方案。