您的位置:程序门 -> db2 -> 数据库开发



load 怎么用,我想在我的存储过程调用


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


load 怎么用,我想在我的存储过程调用
发表于:2008-02-20 17:30:13 楼主
我写了一个load   命令如下
load   from   pnr   of   asc   method   l(66   83,   84   103,   210   212,214   218,   15   17,   18   21,22   22,23   30,31   33,34   36,51   52,     51   52,52   54,   102   108,   9   14,   200   209   )   messages   a.msgs
insert   into   db2admin.tbl_collect_pnr(clt_nam,   clt_enm,   clt_oal,clt_ofn,clt_mal,clt_mfn,clt_msu,clt_ymo,clt_org,clt_des,clt_blc,clt_acl,clt_act,clt_sno,clt_pnr,clt_bds);
在命令行执行可以
我把它放在存储过程当中,存储过程编译通不过
发表于:2008-02-20 20:36:411楼 得分:0
看message文件
发表于:2008-02-21 11:19:462楼 得分:0
存储过程编译通过了,但在执行这句话的时候报   sqlcode=-3192
发表于:2008-02-21 15:15:413楼 得分:0
我存储过程能够执行了,又有新问题
call   sysproc.admin_cmd('load   from'   ¦ ¦   p_loadfielname     ¦ ¦   '   of   asc   modified   by   striptblanks     method   l(66   83,   84   103,   210   212   )   insert   into   db2admin.tbl_collect_pnr(clt_nam,   clt_enm,   clt_oal)');
p_loadfielname   是一个参数,执行不了

call   sysproc.admin_cmd('load   from   c:\pnr.txt   of   asc   modified   by   striptblanks     method   l(66   83,   84   103,   210   212   )   insert   into   db2admin.tbl_collect_pnr(clt_nam,   clt_enm,   clt_oal)');
原来是写死的没有问题
发表于:2008-02-22 10:04:564楼 得分:0
create   procedure   sysload(in   fromtable   varchar(50),in   totable   varchar(50))
language   sql
begin
        declare       sqlstate       char(5);      
        declare       sqlcode       integer;      
        declare       sqlmessage       varchar(2048);      
        declare       rows_read       bigint;      
        declare       rows_skipped       bigint;      
        declare       rows_loaded       bigint;      
        declare       rows_rejected       bigint;      
        declare       rows_deleted       bigint;      
        declare       rows_committed       bigint;      
        declare       rows_part_read       bigint;      
        declare       rows_part_rejected       bigint;      
        declare       rows_part_partitioned       bigint;      
        declare       mpp_load_summary       varchar(32672);      
        declare       cursor_statement       varchar(32672);      
        declare       load_command       varchar(32672);      
       
        set       cursor_statement='declare   mycursor   cursor   for   select   *   from   ' ¦ ¦fromtable;      
        set       load_command='load   from   mycursor   of   cursor   insert   into   ' ¦ ¦   totable     ;      

        call   sysproc.db2load(
                8,--db2   v8   版本      
                cursor_statement,
                load_command,
                sqlcode,
                sqlmessage   ,      
                rows_read,
                rows_skipped,
                rows_loaded,
                rows_rejected,
                rows_deleted,
                rows_committed,
                rows_part_read,
                rows_part_rejected,
                rows_part_partitioned,
                mpp_load_summary
        );
        end   @

我在db2   8   上测试成功了,   8   还不支持sysproc.admin_cmd   ,所以用sysproc.db2load,

你可以先把执行的sql   赋值给一个变量,然后在放入到函数中,应该就可以了。


快速检索

最新资讯
热门点击