免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1943 | 回复: 0
打印 上一主题 下一主题

为什么在SPB中看不见我在CLP中编译过的SQL存储过程 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-03-03 12:42 |只看该作者 |倒序浏览
我在CLP中编译了下面的SQL存储过程,CLP中显示的是编译成功的信息,该信息为“DB20000I The SQL command completed successfully.”。
我的编译命令为db2 -td@ -vf d:\append_by_date.db2,在执行该命令前我已经连接了我的开发数据库(db2 connect to develop user db2admin using db2admin)。但是当我打开我的SPB程序时我却没有发现我编译成功的存储过程,我记得以前都可以啊。请高手指点!!

d:\append_by_date.db2文件的内容如下

--文件名称:append_by_date.db2
--目    标:根据源表中的时间戳以追加的方式把源表中的数据加载到目标表中
--摘    要:调用接口中各个参数的意义如下
--         source       源表(包含schema名)
--         target       目标表(包含schema名),所有目标表的最后一个字段都为数据的加载时期,目
--                      标表中除最后一个字段以外其它字段与源表中的字段完全对应
--         s_datevar    源表数据的上报年月
--         t_etldate    目标表中代表抽取日期的字段名
--         t_datevar    某年月,正式加载前要删除该年月的数据(格式为yyyy-mm),该字段用于从新加载某年月已经加载的数据
--         error_code   SQL语句执行过程中产生的错误码,该错误码等于SQL语句出错时的SQLCODE值
--         error_label  SQL语句执行过程中产生的错误信息,该信息由应用本身定义,用于查找出错位置
--调用例子:

--当前版本:1.0
--作    者:周海明
--完成日期:2003-03-02

--取代版本:
--原作者  :
--完成日期:

create procedure append_by_date(in source varchar(12,
                                in target varchar(12,
                                in s_datevar int,
                                in t_etldate varchar(12,
                                in t_datevar char(7),
                                out error_code integer,
                                out error_label varchar(254))

language sql
begin
  declare SQLCODE integer default 0;
  declare stmt varchar(32672);
  declare at_end int default 0;
  declare col_name varchar(12;
  declare all_col varchar(32672);

  declare c1 cursor for
    select colname
    from syscat.columns
    where tabschema = ucase(substr(source, 1, posstr(source, '.') - 1))
      and tabname = substr(source, posstr(source, '.') + 1, length(source))
    order by colno;

  declare EXIT HANDLER FOR SQLEXCEPTION
    set error_code = SQLCODE;
  declare CONTINUE HANDLER FOR NOT FOUND
    set at_end = 1;
   
  set error_code = 0;
  set all_col = '';
  
  set stmt = 'delete from '||target||
             ' where '||t_etldate||'='''||t_datevar||'''';
  set error_label = 'The position of the error raised is 0001.';
  prepare ps from stmt;
  set error_label = 'The position of the error raised is 0002.';
  execute ps;
  
  
  
  set at_end=0;   
  open c1;
  fetch c1 into col_name;
  while at_end = 0 do
    set all_col = all_col||col_name||',';
    fetch c1 into col_name;
  end while;
  close c1;
  
  
  
  set stmt = 'insert into '||target||' select '||all_col||''''||substr(char(current date, iso), 1, 7)||
             ''' from '||source;
  set error_label = 'The position of the error raised is 0003.';
  prepare ps from stmt;
  set error_label = 'The position of the error raised is 0004.';
  execute ps;
  
  set error_label = '';
end @
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP