我寫了個存儲過程如下,最簡單的:
CREATE proc sf1 (@bookid int, @bookname char)
as
begin tran
update tbtest set bookid=@bookid,bookname=@bookname
commit
GO
然後我在DELPHI中調用
這樣寫
with StoredProc1 do
begin
Close;
StoredProcName:='sf1';
StoredProc1.ParamByName('bookid').AsInteger:=2;
StoredProc1.ParamByName('bookname').AsString:='2';
ExecProc;
end;
執行報錯,參數BOOKID找不到。後來我改成:
with StoredProc1 do
begin
Close;
StoredProcName:='sf1';
Params.Clear;
Params.CreateParam(ftinteger,'bookid',ptinput);
Params.CreateParam(ftinteger,'bookname',ptinput);
ParamByName('bookid').AsInteger:=2;
ParamByName('bookname').AsString:='2';
ExecProc;
end;
執行報錯:GENNAL SQL ERROR。很是困惑,請高手不吝賜教。用BDE,因爲公司要求,沒辦法!
謝謝了。在綫等!
CREATE proc sf1 (@bookid int, @bookname char)
as
begin tran
update tbtest set bookid=@bookid,bookname=@bookname
commit
GO
然後我在DELPHI中調用
這樣寫
with StoredProc1 do
begin
Close;
StoredProcName:='sf1';
StoredProc1.ParamByName('bookid').AsInteger:=2;
StoredProc1.ParamByName('bookname').AsString:='2';
ExecProc;
end;
執行報錯,參數BOOKID找不到。後來我改成:
with StoredProc1 do
begin
Close;
StoredProcName:='sf1';
Params.Clear;
Params.CreateParam(ftinteger,'bookid',ptinput);
Params.CreateParam(ftinteger,'bookname',ptinput);
ParamByName('bookid').AsInteger:=2;
ParamByName('bookname').AsString:='2';
ExecProc;
end;
執行報錯:GENNAL SQL ERROR。很是困惑,請高手不吝賜教。用BDE,因爲公司要求,沒辦法!
謝謝了。在綫等!
解决方案 »
- 关于want的 使用
- **********开发ERP框架,征求意见或寻求合作者**********
- 如何读取excel文件中第二个sheet表中的内容
- 放全部身家求助!D版的高手都进来看!别让人说老外能做的东西我们做不了!!
- Midas从表不能更新
- 简单问题,在线等!
- 对于一个动态创建的构件,如何在它的事件中加入代码?
- 完善 SysTrayIcon 時踫到的一個問題,高手請進。
- 小弟初学乍练DCOM,有一事不明。
- 急急!!!向高手请教一个有关combobox的问题?????
- tidtcpserver问题,关闭服务器端,客户端发送的第一条数据不提示错误
- 关于dbComboboxLookupEh控件的默认值
你的存储过程中直接全部update了,都没有where语句。我测试使用的是下面的语句,环境Delphi 7,BDE,MSDE 2000 Release A,因为我的库有实际数据,不能update.
CREATE proc sf1 (@bookid int, @bookname char)
as
begin tran
INSERT INTO tbtest(bookid,bookname) VALUES(@bookid,@bookname)
commit
GO
PS:我用ADOStoredProc1控件的话,这样写是可以成功执行的(同个存储过程),有没有其他的可能?
with ADOStoredProc1 do
begin
Close;
ProcedureName:='sf1';
Parameters.Clear;
Parameters.CreateParameter('a',ftinteger,pdinput,0,StrToInt(Edit1.Text));
Parameters.CreateParameter('bb',ftstring,pdinput,Length(Edit2.Text),Edit2.text);
ExecProc;
end;
这样是成功的,BDE依然存在同样问题,再求解答!
我怀疑是我的赋值方法有问题,但是不知道问题在哪!
希望大家看清我的问题!
CREATE proc sf1 (@book_id int, @book_name char)
as
begin tran
update tbtest set bookname=@book_name where bookid=@book_id//这里先改成这样测试一下。
commit
GOwith StoredProc1 do
begin
Close;
StoredProcName:='sf1';
Params.Clear;
Params.CreateParam(ftinteger,'book_id',ptinput);
Params.CreateParam(ftinteger,'book_name',ptinput);
ParamByName('book_id').AsInteger:=2;
ParamByName('book_name').AsString:='2';
ExecProc;
end;
这样在试试,不知道是不是参数名和字段名一样的问题。反正我的参数名和字段名一样都没有问题。
參數名也要和sf1中保持一致!
謝謝了!