今天主管让我在PL/SQL里面执行存储过程~这部分很生疏,以至于不知道如何下手,只好求救google,还好google里面有很多例子,可是在我这里就是死活不成功,其实主要的问题,在于输出参数的如何定义~

首先定义存储过程如下:

CREATE OR REPLACE PROCEDURE "JK_DATA_CHECK_TABLE" (SRC_TABLE_NAME in varchar2,dataType in varchar2,bat_id in varchar2,flag out varchar2)
is
stable      varchar2(100) := SRC_TABLE_NAME||'@JIEKOU';
insertSql   varchar2(4000);
increment   varchar2(32) := 'ins';    --增量ins/全量full
begin
  if dataType='site' then --局站
    if increment='ins' then--增量
       insertSql:='insert into iodso.gxzy_ods_site_temp(ID,NAME,CODE,PXJ,PARENT_ID,PARENT_CODE,CREATE_TIME,EDIT_TIME,STATUS,INS_DATE,BAT_ID,AREA_ID)
                                                 select ID,NAME,CODE,PXJ,PARENT_ID,PARENT_CODE,CREATE_TIME,EDIT_TIME,STATUS,INS_DATE,BAT_ID,AREA_ID
                                                 from '||stable||' where bat_id=:bat_id';
       execute immediate insertSql using bat_id;
       commit;
       odso.data_check_site(bat_id,flag);
    else
       insertSql:='insert into odso.gxzy_ods_site(ID,NAME,CODE,PXJ,PARENT_ID,PARENT_CODE,CREATE_TIME,EDIT_TIME,STATUS,INS_DATE,BAT_ID,AREA_ID)
                                           select ID,NAME,CODE,PXJ,PARENT_ID,PARENT_CODE,CREATE_TIME,EDIT_TIME,STATUS,INS_DATE,BAT_ID,AREA_ID
                                           from '||stable||' where bat_id=:bat_id';
       execute immediate insertSql using bat_id;
       commit;
    end if;
   
  elsif dataType='ccp' then --交接箱,添加了新的字段,odso比接口库多write_time子都
    if increment='ins' then--增量
       insertSql:='insert into iodso.gxzy_ods_ccp_temp(CCP_ID,CCP_CODE,XBZ,INSTALLEDADDRESS,DP_ID,DP_CODE,PARENT_DP_ID,PARENT_DP_CODE,SITE_ID,SITE_CODE,CREATE_TIME,EDIT_TIME,STATUS,INS_DATE,BAT_ID,AREA_ID)
                                                select CCP_ID,CCP_CODE,XBZ,INSTALLEDADDRESS,DP_ID,DP_CODE,PARENT_DP_ID,PARENT_DP_CODE,SITE_ID,SITE_CODE,CREATE_TIME,EDIT_TIME,STATUS,INS_DATE,BAT_ID,AREA_ID
                                                from '||stable||' where bat_id=:bat_id';
       execute immediate insertSql using bat_id;
       commit;
       odso.data_check_ccp(bat_id,flag);
    else
       insertSql:='insert into odso.gxzy_ods_ccp(CCP_ID,CCP_CODE,XBZ,INSTALLEDADDRESS,DP_ID,DP_CODE,PARENT_DP_ID,PARENT_DP_CODE,SITE_ID,SITE_CODE,CREATE_TIME,EDIT_TIME,STATUS,INS_DATE,BAT_ID,AREA_ID)
                                          select CCP_ID,CCP_CODE,XBZ,INSTALLEDADDRESS,DP_ID,DP_CODE,PARENT_DP_ID,PARENT_DP_CODE,SITE_ID,SITE_CODE,CREATE_TIME,EDIT_TIME,STATUS,INS_DATE,BAT_ID,AREA_ID
                                          from '||stable||' where bat_id=:bat_id';
       execute immediate insertSql using bat_id;
       commit;
    end if;
   
  elsif dataType='usercard' then  --用户卡片
    if increment='ins' then--增量
       insertSql:='insert into iodso.gxzy_ods_user_card_temp select * from '||stable||' where bat_id=:bat_id';
       execute immediate insertSql using bat_id;
       commit;
       odso.data_check_usercard(bat_id,flag);
    else
       insertSql:='insert into odso.gxzy_ods_user_card( ACC_NUMBER,CCP_ID,CCP_CODE,DP_ID,DP_CODE,ADDRESS_ID,CREATE_TIME,EDIT_TIME,STATUS,INS_DATE,WRITE_TIME,BAT_ID,AREA_ID)
                                                 select ACC_NUMBER,CCP_ID,CCP_CODE,DP_ID,DP_CODE,ADDRESS_ID,CREATE_TIME,EDIT_TIME,STATUS,INS_DATE,WRITE_TIME,BAT_ID,AREA_ID
                                                 from '||stable||' where bat_id=:bat_id';
       execute immediate insertSql using bat_id;
       commit;
    end if;
   
  elsif dataType='address' then   --标准地址
     if increment='ins' then--增量
       insertSql:='insert into iodso.gxzy_ods_standard_address_temp select * from '||stable||' where bat_id=:bat_id';
       execute immediate insertSql using bat_id;
       commit;
       odso.data_check_adrress(bat_id,flag);
     else
       insertSql:='insert into odso.gxzy_ods_standard_address(COMBINE_ID,COMBINE_LEGACY_ID,ID1,LEGACY_ID1,NAME,ID2,LEGACY_ID2,NAME2,ID3,LEGACY_ID3,NAME3,ID4,LEGACY_ID4,NAME4,ID5,LEGACY_ID5,NAME5,ID6,LEGACY_ID6,NAME6,CREATE_TIME,EDIT_TIME,STATUS,INS_DATE,WRITE_TIME,BAT_ID,AREA_ID)
                                                       select COMBINE_ID,COMBINE_LEGACY_ID,ID1,LEGACY_ID1,NAME,ID2,LEGACY_ID2,NAME2,ID3,LEGACY_ID3,NAME3,ID4,LEGACY_ID4,NAME4,ID5,LEGACY_ID5,NAME5,ID6,LEGACY_ID6,NAME6,CREATE_TIME,EDIT_TIME,STATUS,INS_DATE,WRITE_TIME,BAT_ID,AREA_ID
                                                       from '||stable||' where bat_id=:bat_id';
       execute immediate insertSql using bat_id;
       commit;
     end if

else
     flag :='false';
  end if;
  exception when others then
      flag:='false';
      rollback;
      raise;
end JK_DATA_CHECK_TABLE;

下面是在command window里面的执行语句,我搞好长时间才搞出来。

1  declare

2  v_out_test varchar2(10);

3  begin

4  JK_DATA_CHECK_TABLE(SRC_TABLE_NAME=>'SRM.GXZY_ODS_CCP',dataType => 'cpp',bat_id => 'oss_resource#5113',flag => v_out_test);

5  end;

6  /

这样就可以执行成功了

如果有异常也就会报些异常了

我们在来总结一下如何进行debuger

第一步:首先在存储过程的名字上右键点击 ——》test  我们就会看到一个界面 在左上角有个小的按钮就是用来调试的

第二步:要在下面的界面上输入所有用到的参数,除了输出参数以外。

第三步:这样我们就可以通过界面的按钮step into step over stepout 不过还有一个按钮式 step next exception下一个异常很有用处,如果你进行批量插入的话,只是中间有个异常,一步步执行肯定要累死,她的好处就在此,

第四步:还有我们想查找中间的变量的值的话,左下角有有个输入变量的地方,这样我们就可以随时查找变量的值了

还是没有myeclipse方便,不过做的已经很好了,能解决我们一般遇到的sql问题。

如何执行存储过程以及如何进行调试?相关推荐

  1. 用C#实现对Oracle 存储过程/函数/包的调试(附源代码)

    Oracle用SYS.DBMS_DEBUG实现对存储过程/函数/包的调试.如果你用DESC SYS.DBMS_DEBUG命令查看它的发现其 成员函数和方法并不是特别多,但是为了实现这个功能却花了我近1 ...

  2. 通过 Visual Studio 对 SQL Server 中的存储过程设置断点并进入存储过程对其进行调试...

    通过 Visual Studio 的 Professional 和 Team System 版本,我们可以对 SQL Server 中的存储过程设置断点并进入存储过程对其进行调试,这样我们可以象调试应 ...

  3. oracle怎么执行存储过程_分享一个分析Oracle存储过程性能小技巧

    概述 最近接触了物流数据库这一块,OLAP类型的系统,有好多存储过程后面需要去做优化,因为写存储过程中会遇到存储过程执行时间太长问题,如果能知道存储过程里面具体的执行情况是如何的就可以帮助我们进一步分 ...

  4. openquery 如果执行存储过程_ORA-01502--记一次数据库索引失效导致执行存储过程出错...

    概述 记录一下最近碰到的一个问题,系统维护人员发现接口平台异常,报错如下: 信息:执行存储过程xxxx出错!开始执行存储过程xxxx-12008-----ORA-12008: 实体化视图的刷新路径中存 ...

  5. Oracle数据库PL/SQL中执行存储过程

    有时生产线上问题,或者调试需要手动在pl/sql中执行存储过程,但一般不建议这么做(影响线上交易). 一.直接测试执行 在pl/sql中找到对应需要测试的存储过程,左边菜单栏:Procedures下. ...

  6. c#执行oracle存储过程,C#中如何执行存储过程方法

    功能 :  根据调用的方法名称  反射动态调用  sql Command 的方法 代码如下: /// /// 存储过程的属性 /// ProcName 存储过程的名称 /// MethodName 执 ...

  7. mycat mysql 存储过程_MyCat 学习笔记 第十三篇.数据分片 之 通过HINT执行存储过程...

    1 环境说明 VM 模拟3台MYSQL 5.6 服务器 VM1 192.168.31.187:3307 VM2 192.168.31.212:3307 VM3 192.168.31.150:  330 ...

  8. java连接sqlserver 2005执行存储过程的几种情况

    2019独角兽企业重金招聘Python工程师标准>>> java链接sqlserver 执行存储过程 package com.antianlu.test;import java.sq ...

  9. mysql 存储过程无效_用VC通过DLL包连接MySQL,执行存储过程后,再执行其他查询无效?解决方法...

    用VC通过DLL包连接mysql,执行存储过程后,再执行其他查询无效? MYSQL mysql; mysql_init(&mysql); mysql_real_connect(&mys ...

最新文章

  1. gcc中-pthread和-lpthread的区别
  2. Npm的配置管理及设置代理
  3. idea 自动生成mybaits_怎么让idea自动创建mybatis配置文件
  4. html怎么给code标签添加语言,html code标签怎么用?html code标签的作用解释
  5. eclipse linux远程调试工具,使用本地Eclipse IDE调试器与远程项目源(Linux)
  6. VS2019调试查看变量_单片机编程软件一点通,IAR单片机编程软件工程调试方法
  7. 头发制作_【绘画教程】动漫人物的头发该怎么画?
  8. your ps needs to be repaired_同一张人像照片,25 个国家的PS后!!!
  9. 贺利坚老师汇编课程74笔记:按下esc键改变显示颜色
  10. python hbase_python 操作 hbase
  11. 高速路上车辆组队链接的想法
  12. DCMTK的Worklist初探
  13. Python 标准库 API参考文档
  14. Docker 安装及镜像加速器配置
  15. 深入浅出对话系统——概述
  16. BPM业务流程管理的前世今生
  17. Excel中提取单元格(括号)内的信息
  18. 观察者模式(C语言实现)
  19. [PS教程]怎么用PS将图片印章的背景变透明
  20. 微软专业资历认证有哪些?

热门文章

  1. 苹果电脑修改用户名方法
  2. 【JAVA】 容纳对象 Set
  3. 商务个人邮箱如何注册申请?商务邮箱账号怎么登录?
  4. 计算机二级长春光华学院,长春光华学院排名2021 吉林排名第3全国排名第73
  5. Oralce存储过程
  6. 全球及中国LCP行业发展动态与投资趋势分析报告2022~2028年
  7. 【应用随机过程】07. 平稳过程
  8. 利用alias自定义快捷命令
  9. 活猫还是死猫?| 薛定谔的猫 | 儿童故事
  10. 安卓开发ESC/POS打印机打印