急急,数据库操作出现list index out of bounds(0) 错误

chqing21 2013-02-17 11:18:44
用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();
...全文
1657 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
haitao 2013-02-18
  • 打赏
  • 举报
回复
这么多参数,难怪笔误了
feiba7288 2013-02-18
  • 打赏
  • 举报
回复
SQLDataSet1.Params.CreateParam(ftFixedChar,'V-columns_3',ptInput).AsString:= '';
chqing21 2013-02-18
  • 打赏
  • 举报
回复
schema
chqing21 2013-02-18
  • 打赏
  • 举报
回复
终于搞定,原来是sechema没有设置
chqing21 2013-02-18
  • 打赏
  • 举报
回复
这个早就发现了,改过来一样没有用

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧