关于存储过程执行时的两个错误问题,很烦人。各位大虾快来看看!(50分)

  • 主题发起人 主题发起人 sun_hong_jun
  • 开始时间 开始时间
S

sun_hong_jun

Unregistered / Unconfirmed
GUEST, unregistred user!
创建的存储过程代码为:
create proc sfj @name varchar(10) as
select * from authors where au_fname=@name
执行代码如下:
procedure TForm1.Button1Click(Sender: TObject);
begin
with proc do
begin
StoredProcName :='sfj';
parambyname('name').Value :=''''+edit1.text+'''';注:这样会出现第二个错误
或 params[0].value:=''''+edit1.text+'''';注:这样会出现第一个错误
prepare;
open;
end;
end;
第一个错误提示为:
list index out of bounds(0)
第二个错误提示为:
parameter 'name' not find
 
parambyname('@name').Value :=
 
》》select * from authors where au_fname=@name
用得着存储过程吗?
 
如果是INTERBASE的话,参数定义应为 :name 不是@name
 
从错误信息看,是没有创建参数.
StoredProcName :='sfj';
下面应该创建参数,
Parameters.CreateParam(....)

看看
http://www.delphibbs.com/delphibbs/dispq.asp?lid=782508
 
用 query來算了
query1.close;
query1.sql.text:='exec sfj +''''+edit1.text+''''
query1.open;
 
如果用TStoredProc,需要建立参数
Params.CreateParam(ftInteger, 'CustNo', ptInput)
如果用TADOStoredProc,可以Parameters.Refresh;
 
同意,你可能没有创建Param,StoredProcName 每做一次改变,Params自动清空,
只在设计阶段自动添加。
 
你酷必了!
 
后退
顶部