当前位置:主页>仓库管理软件> 列表

关于存储过程的小问题! 找速达软件下载

记账软件版1楼: 我的存储过程是:
CREATE procedure proc_jifensc_1
( @kkhcode char(10)
)
AS
BEGIN
if exists(select * from jifensc where riqi<''2006-01-01''and kkhcode=@kkhcode)
begin
begin tran
delete jifensc where riqi<''2006-01-01'' and kkhcode=@kkhcode /*删除超过六个月的记录*/
if @@error<>0
begin
rollback tran
print(''数据库发生未知错误,请联系开发人员!'')
return
end
else
commit tran
end
select a.kkhcode,a.kkhname,sum(b.jifen)as jifen,sum(b.jine)as jine from cardcust a,jifensc b where a.kkhcode=b.kkhcode and a.kkhcode=@kkhcode group by a.kkhcode,a.kkhname
return
end
GO
然后delphi中是这样设置的:
try
with datamodule1.chaxunjf1 do //输入存储过程查询积分
begin
close;
prepared:=false;
parameters.ParamByName(''@kkhcode'').Value:=''0001'';
prepared:=true;
execproc;
labelededit3.Text:=fieldbyname(''kkhcode'').AsString;
labelededit4.Text:=fieldbyname(''kkhname'').AsString;
labelededit5.Text:=fieldbyname(''jifen'').AsString;
labelededit6.Text:=fieldbyname(''jine'').AsString;
end;
except
MessageDlg(''软件在操作数据库发生错误,请关闭重试!'',mtError,[mbok],0);
end;
可是我在调试的时候老是报错:
chaxunjf1:parameter ''@kkhcode'' not found
我感觉我写的都对呀?

2楼: TADOQuery.Close;
TADOQuery.SQL.Text := ''Exec proc_jifensc_1 '''''' + ''ABC'' + '''''''';
TADOQuery.Open; 如进销存管理软件下载

3楼: to royal1442,
你说的方法可以运行成功,可是关键我的方法哪里有问题? 为什么就是报错呢?
而且要是用你是方法的话怎么样传递存储过程的变参呢?
能帮我看下我的错误在哪里?

4楼: 顶一下 帮帮我呀各位!

5楼: 是存储过程控件的Parameters属性没有@kkhcode这个变量,解决的办法为:把存储过程控件的connection和procedurename属性清空,然后再正确设置connection和procedurename属性,然后打开Parameters属性的按钮,再关闭Parameters属性的窗口,这样应该就OK了。

6楼: 按照楼上的步骤,然后看看该参数的类型是不是string的

记账软件版7楼: to shenbo_shenbo
我的connection和procedurename属性都设置好了,这个我想应该没有问题
Parameters属性:
prepared:=false;
parameters.ParamByName(''@kkhcode'').Value:=trim(edit1.text);
prepared:=true;
存储过程的设置是:
CREATE procedure proc_jifensc_1
( @kkhcode char(10)
)
这哪里有问题吗?

8楼: 看你的存储过程,应该是从数据库取出记录吧,怎么用execproc不用active:=True?

9楼: 我知道了
难道用存储过程时必须要这么做吗:然后打开Parameters属性的按钮,再关闭Parameters属性的窗口,
to 寂寞的鸭子,
我按你的方法把execproc改成open了,现在好了,谢谢!

10楼: 在Prepared:=False 后面加上一句
Parameters.CreateParameter(''@kkhcode'',ftString, pdInput, 50, null);
就可以了``试一下拉``

11楼: TADOQuery.Close;
TADOQuery.SQL.Text := ''Exec proc_jifensc_1 :kkhcode '';
TADOQuery.parameters.ParamByName(''kkhcode'').Value:=''0001'';
TADOQuery.Open;

12楼: CREATE procedure proc_jifensc_1
( @kkhcode char(10)
)

是不是该定义下是输出类型还是输入类型的吧!!呵呵,我一直都是很老实的写好。

不知道是不是这里的问题! 如速达软件下载

13楼: 多人接受答案了。