weixin_41931064 2018-10-18 10:52 采纳率: 16.7%
浏览 1429
已结题

PLS-00103 出现符号“AS”在下列:

CREATE OR REPLACE PROCEDURE S_DQCYJ/*(V_NY IN VARCHAR2,
v_flag in varchar2 := 'S_DQCYJ')*/ is
/*----------------------------------------------------------------------------------------
功能要求:根据........处理(DQCYJ)
编写人:
编写开始日期: 编写结束日期:
参数定义: 年月
数据来源:
调用方法:其它语言中调用,PL/SQL过程中 如:EXEC S_DQCYJ ('参数');
-----------------------------------------------------------------------------------------*/
AS
e_clerror exception;
v_error_msg varchar2(4000);
v_func_result varchar2(1000); *存放函数返回值*\

v_count number(1) := 0; *存放处理前数据检查的返回值*\
type r_col is table of varchar2(4000) index by binary_integer; *存放列名和列值*\
v_col_name r_col;
v_col_values r_col;
cursor c_proc_1 is
SELECT A.WELL_DESC JH, * 井号*\

       B.YEAR_MON           NY, \* 年月*\
       C.OIL_PROD_METHOD    CYFS, \* 采油方式*\
       B.PROD_DAYS          SCTS, \* 生产天数*\
       C.PUMP_DIAMETER      BJ, \* 泵径*\
       C.PUMP_DEPTH         BS, \* 泵深*\
       C.STROKE_LENGTH      CC, \* 冲程*\
       C.STROKE_FREQUENCY   CC1, \* 冲次*\
       C.DISCHARGE_CAPACITY PL, \* 排量*\
       C.PUMP_EFFICIENCY    BX, \* 泵效*\
       B.OIL_PRES           YY, \* 油压*\
       B.CASING_PRES        TY, \* 套压*\
       B.FLOW_PRES          LY, \* 流压*\
       B.WATER_CUT_RATIO    HS, \* 含水率*\
       B.OIL_PROD_DAILY     RCYL, \* 日产油量*\
       B.WATER_PROD_DAILY   RCSL, \* 日产水量*\
       B.GAS_PROD_DAILY     RCQL, \* 日产气量*\
       B.OIL_PROD_VOL_MON   YCYL, \* 月产油量*\
       B.WATER_PROD_VOL_MON YCSL, \* 月产水量*\
       B.GAS_PROD_MON       YCQL, \* 月产气量*\
       B.OIL_PROD_YEAR      NCYL, \* 年产油量*\
       B.WATER_PROD_YEAR    NCSL, \* 年产水量*\
       B.GAS_PROD_YEAR      NCQL, \* 年产气量*\
       B.OIL_PROD_CUM       LJCYL, \* 累计油量*\
       B.WATER_PROD_CUM     LJCSL, \* 累计水量*\
       B.GAS_PROD_CUM       LJCQL, \* 累计气量*\
       NULL                 BZ \* 备注*\
  FROM cy11.cd_well_source@A2LINK.US.ORACLE.COM      A,
       PC_WELL_PRO_MONTHLY@A2LINK.US.ORACLE.COM      B,
       PC_WELL_PRO_MECH_MONTHLY@A2LINK.US.ORACLE.COM C
 WHERE A.well_id = B.WELL_ID
   AND A.well_id = C.WELL_ID
   AND B.YEAR_MON = C.YEAR_MON
   AND B.YEAR_MON = V_NY;*/

begin
/*先删除log_tab_error表中错误信息,并提交数据库**************/
delete from log_tab_error where error_type = v_flag;
commit;
*----------处理前检查输入参数是否正确----------------------*\
if (length(v_ny) <> 6) then
v_error_msg := '参数格式输入错误!格式应为“yyyymm”,6位数字';
RAISE e_clerror;
end if;
*----------处理前各个数据表数据检查---------------------------------*\
select count(*)
into v_count
from PC_WELL_PRO_MONTHLY@A2LINK.US.ORACLE.COM
where rownum < 2
and YEAR_MON = v_ny;
if (v_count = 0) then
v_error_msg := '在执行过程S_DQCYJ时:"C_WELL_PRO_MONTHLY"表中没有' || v_ny ||
'月的数据';
RAISE e_clerror;
end if;
*处理前先删除插入表当月数据并提交数据库**********************\
delete from DQCYJ where ny = v_ny;
commit;
*开始处理数据************************************************\
v_col_name(1) := 'JH'; **\
v_col_name(2) := 'NY'; **\
v_col_name(3) := 'CYFS'; **\
v_col_name(4) := 'SCTS'; **\
v_col_name(5) := 'BJ'; **\
v_col_name(6) := 'BS'; **\
v_col_name(7) := 'CC'; **\
v_col_name(8) := 'CC1'; **\
v_col_name(9) := 'PL'; **\
v_col_name(10) := 'BX'; **\
v_col_name(11) := 'YY'; **\
v_col_name(12) := 'TY'; **\
v_col_name(13) := 'LY'; **\
v_col_name(14) := 'HS'; **\
v_col_name(15) := 'RCYL'; **\
v_col_name(16) := 'RCSL'; **\
v_col_name(17) := 'RCQL'; **\
v_col_name(18) := 'YCYL'; **\
v_col_name(19) := 'YCSL'; **\
v_col_name(20) := 'YCQL'; **\
v_col_name(21) := 'NCYL'; **\
v_col_name(22) := 'NCSL'; **\
v_col_name(23) := 'NCQL'; **\
v_col_name(24) := 'LJCYL'; **\
v_col_name(25) := 'LJCSL'; **\
v_col_name(26) := 'LJCQL'; **\
v_col_name(27) := 'BZ'; **\
for c_1 in c_proc_1 loop
*--处理各列数据-----------------------------------------------*\
v_col_values(1) := c_1.JH; **\
v_col_values(2) := c_1.NY; **\
v_col_values(3) := c_1.CYFS; **\
v_col_values(4) := c_1.SCTS; **\
v_col_values(5) := c_1.BJ; **\
v_col_values(6) := c_1.BS; **\
v_col_values(7) := c_1.CC; **\
v_col_values(8) := c_1.CC1; **\
v_col_values(9) := c_1.PL; **\
v_col_values(10) := c_1.BX; **\
v_col_values(11) := c_1.YY; **\
v_col_values(12) := c_1.TY; **\
v_col_values(13) := c_1.LY; **\
v_col_values(14) := c_1.HS; **\
v_col_values(15) := c_1.RCYL; **\
v_col_values(16) := c_1.RCSL; **\
v_col_values(17) := c_1.RCQL; **\
v_col_values(18) := c_1.YCYL; **\
v_col_values(19) := c_1.YCSL; **\
v_col_values(20) := c_1.YCQL; **\
v_col_values(21) := c_1.NCYL; **\
v_col_values(22) := c_1.NCSL; **\
v_col_values(23) := c_1.NCQL; **\
v_col_values(24) := c_1.LJCYL; **\
v_col_values(25) := c_1.LJCSL; **\
v_col_values(26) := c_1.LJCQL; **\
v_col_values(27) := c_1.BZ; **\
*--把处理结果插入目标表---------------------------------------*\
insert into DQCYJ
(JH **\,
NY **\,
CYFS **\,
SCTS **\,
BJ **\,
BS **\,
CC **\,
CC1 **\,
PL **\,
BX **\,
YY **\,
TY **\,
LY **\,
HS **\,
RCYL **\,
RCSL **\,
RCQL **\,
YCYL **\,
YCSL **\,
YCQL **\,
NCYL **\,
NCSL **\,
NCQL **\,
LJCYL **\,
LJCSL **\,
LJCQL **\,
BZ **)
values
(c_1.JH **\,
c_1.NY **\,
c_1.CYFS **\,
c_1.SCTS **\,
c_1.BJ **\,
c_1.BS **\,
c_1.CC **\,
c_1.CC1 **\,
c_1.PL **\,
c_1.BX **\,
c_1.YY **\,
c_1.TY **\,
c_1.LY **\,
c_1.HS **\,
c_1.RCYL **\,
c_1.RCSL **\,
c_1.RCQL **\,
c_1.YCYL **\,
c_1.YCSL **\,
c_1.YCQL **\,
c_1.NCYL **\,
c_1.NCSL **\,
c_1.NCQL **\,
c_1.LJCYL **\,
c_1.LJCSL **\,
c_1.LJCQL **\,
c_1.BZ **);
end loop;
commit;
*--执行例外*****************\
exception
when e_clerror then
ROLLBACK;
insert into log_tab_error
(error_type, error_msg, error_user)
values
(v_flag, v_error_msg, null);
commit;
when DUP_VAL_ON_INDEX then
ROLLBACK;
v_error_msg := '在执行过程S_DQCYJ时:处理到' || 'JH()=' || v_col_values(1) ||
'NY()=' || v_col_values(2) || '时,有重复记录!';
insert into log_tab_error
(error_type, error_msg, error_user)
values
(v_flag, v_error_msg, null);
commit;
when others then
ROLLBACK;
IF (SQLCODE = -1401) OR (SQLCODE = -1438) THEN
-- *字符或数值超宽*\
-- *判断插入值宽度是否大于表字段宽度-----*\
for i in 1 .. 27 loop
v_func_result := f_col_len_errmessage('DQCYJ',
v_col_name(i),
v_col_values(i),
'JH()',
v_col_values(1),
'NY()',
v_col_values(2));
if (v_func_result != 'Y') then
v_error_msg := '在执行过程S_DQCYJ时:' || v_func_result;
insert into log_tab_error
(error_type, error_msg, error_user)
values
(v_flag, v_error_msg, null);
commit;
end if;
end loop;
ELSE
v_error_msg := '在执行S_DQCYJ过程时,执行到' || 'JH()=' || v_col_values(1) ||
'NY()=' || v_col_values(2) || '时:' ||
F_ORA_ERRMESSAGE(SQLCODE) || chr(10) || '系统信息:' ||
chr(10) || SQLERRM;
insert into log_tab_error
(error_type, error_msg, error_user)
values
(v_flag, v_error_msg, null);
commit;
END IF;
END S_DQCYJ;
图片说明

  • 写回答

1条回答 默认 最新

  • devmiao 2018-10-18 15:56
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 ubuntu系统下挂载磁盘上执行./提示权限不够
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型