首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

急数据库操作出现list index out of bounds(0) 异常

2013-04-21 
急急,数据库操作出现list index out of bounds(0) 错误用DBExpress连接DB2数据库。使用TSQLDataSet执行存储

急急,数据库操作出现list index out of bounds(0) 错误
用DBExpress连接DB2数据库。使用TSQLDataSet执行存储过程的时候(动态创建存储过程参数),一直报 list index out of bounds(0)错。
静态下来存储过程,自动产生参数后,可以执行。
存储过程:
CREATE PROCEDURE proc_NewSave_Sys (v_uniqueguid_2 VARCHAR(36), 
                                v_uniqueid_3 VARCHAR(32), 
                                v_agent_4 VARCHAR(16), 
                                v_callid_5 VARCHAR(24), 
                                v_calledid_6 VARCHAR(24), 
                                v_extention_7 VARCHAR(16), 
                                v_preid_8 VARCHAR(16), 
                                v_nextid_9 VARCHAR(16), 
                                v_starttime_10 VARCHAR(36), 
                                v_endtime_11 VARCHAR(36), 
                                v_howtime_12 INTEGER, 
                                v_acd_13 INTEGER, 
                                v_dins_14 INTEGER, 
                                v_inorout_15 SMALLINT, 
                                v_ifback_16 SMALLINT, 
                                v_backwhere_17 VARCHAR(30), 
                                v_backpath_18 VARCHAR(10), 
                                v_voicepath_19 VARCHAR(32), 


                                v_datapath_20 VARCHAR(32), 
                                v_files_21 VARCHAR(20), 
                                v_whereplace_22 VARCHAR(30), 
                                v_voicesize_23 INTEGER, 
                                v_datasize_24 INTEGER, 
                                v_restorepath_25 VARCHAR(64),
v_columns_1 CHAR(50),
v_columns_2 CHAR(50),
v_columns_3 CHAR(50),
v_columns_4 CHAR(50),
v_columns_5 CHAR(50),
v_columns_6 CHAR(50),
v_columns_7 CHAR(50),
v_columns_8 CHAR(50),
v_columns_9 CHAR(50),
v_columns_10 CHAR(50),
OUT v_outvalue INTEGER)
。。。。。
。。。。。
调用代码:

        SQLDataSet1.CommandType:= ctStoredProc;
        SQLDataSet1.CommandText:= Format('%s.proc_NewSave_Sys',[trim(edtschema.text)]);
        SQLDataSet1.close;
        SQLDataSet1.Params.Clear;
        //FADOStoredProc.Params.CreateParam(ftInteger,'v_return',ptResult).AsInteger:= -1;
        SQLDataSet1.Params.CreateParam(ftString,'v_uniqueguid_2',ptInput).AsString:= 'DVS+'+guid+'-3001';
        SQLDataSet1.Params.CreateParam(ftString,'V_uniqueid_3',ptInput).AsString:= guid;
        SQLDataSet1.Params.CreateParam(ftString,'V_agent_4',ptInput).AsString:= '3001';
        SQLDataSet1.Params.CreateParam(ftString,'V_callid_5',ptInput).AsString:= '';
        SQLDataSet1.Params.CreateParam(ftString,'V_calledid_6',ptInput).AsString:= '';
        SQLDataSet1.Params.CreateParam(ftString,'V_extention_7',ptInput).AsString:= '3001';
        SQLDataSet1.Params.CreateParam(ftString,'V_preid_8',ptInput).AsString:= '';
        SQLDataSet1.Params.CreateParam(ftString,'V_nextid_9',ptInput).AsString:= '';

        begintime:= FormatDateTime('yyyy-mm-dd hh:nn:ss',now);
        endtime:= FormatDateTime('yyyy-mm-dd hh:nn:ss',now + StrToFloat(Trim(EdtHowTime.Text))/24/60/60);
        SQLDataSet1.Params.CreateParam(ftString,'V_starttime_10',ptInput).AsString:= begintime;
        SQLDataSet1.Params.CreateParam(ftString,'V_endtime_11',ptInput).AsString:= endtime;


        SQLDataSet1.Params.CreateParam(ftInteger,'V_howtime_12',ptInput).AsInteger:= StrToInt(Trim(EdtHowTime.Text));
        SQLDataSet1.Params.CreateParam(ftInteger,'V_acd_13',ptInput).AsInteger:= 0;
        SQLDataSet1.Params.CreateParam(ftInteger,'V_dins_14',ptInput).AsInteger:= 0;
        SQLDataSet1.Params.CreateParam(ftSmallint,'V_inorout_15',ptInput).AsInteger:= 0;
        SQLDataSet1.Params.CreateParam(ftSmallint,'V_ifback_16',ptInput).AsInteger:= 0;
        SQLDataSet1.Params.CreateParam(ftString,'V_backwhere_17',ptInput).AsString:= '';
        SQLDataSet1.Params.CreateParam(ftString,'V_backpath_18',ptInput).AsString:= '';
        SQLDataSet1.Params.CreateParam(ftString,'V_voicepath_19',ptInput).AsString:= '';
        SQLDataSet1.Params.CreateParam(ftString,'V_datapath_20',ptInput).AsString:= destpath;
        SQLDataSet1.Params.CreateParam(ftString,'V_files_21',ptInput).AsString:= filename+ '3001';
        SQLDataSet1.Params.CreateParam(ftString,'V_whereplace_22',ptInput).AsString:= '';
        SQLDataSet1.Params.CreateParam(ftInteger,'V_voicesize_23',ptInput).AsInteger:= 0;
        SQLDataSet1.Params.CreateParam(ftInteger,'V-datasize_24',ptInput).AsInteger:= 1000;
        SQLDataSet1.Params.CreateParam(ftString,'V_restorepath_25',ptInput).AsString:= '';
        SQLDataSet1.Params.CreateParam(ftFixedChar,'V_columns_1',ptInput).AsString:= '';
        SQLDataSet1.Params.CreateParam(ftFixedChar,'V_columns_2',ptInput).AsString:= '';
        SQLDataSet1.Params.CreateParam(ftFixedChar,'V-columns_3',ptInput).AsString:= '';
        SQLDataSet1.Params.CreateParam(ftFixedChar,'V_columns_4',ptInput).AsString:= '';
        SQLDataSet1.Params.CreateParam(ftFixedChar,'V_columns_5',ptInput).AsString:= '';
        SQLDataSet1.Params.CreateParam(ftFixedChar,'V_columns_6',ptInput).AsString:= '';
        SQLDataSet1.Params.CreateParam(ftFixedChar,'V_columns_7',ptInput).AsString:= '';
        SQLDataSet1.Params.CreateParam(ftFixedChar,'V_columns_8',ptInput).AsString:= '';
        SQLDataSet1.Params.CreateParam(ftFixedChar,'V_columns_9',ptInput).AsString:= '';
        SQLDataSet1.Params.CreateParam(ftFixedChar,'V_columns_10',ptInput).AsString:= '';
        SQLDataSet1.Params.CreateParam(ftInteger,'V_outvalue',ptOutput).AsInteger:= outvalue;
         Memo1.Lines.Add(IntToStr( SQLDataSet1.Params.Count));
        SQLDataSet1.ExecSQL();
[解决办法]
SQLDataSet1.Params.CreateParam(ftFixedChar,'V-columns_3',ptInput).AsString:= '';


------解决方案--------------------


这么多参数,难怪笔误了

热点排行