导航:
论坛 -> DELPHI技术
斑竹:liumazi,sephil
作者:
2004/5/14 9:12:08
标题:
这样的问题,不应该这么困难呀,可我发贴20多天了,没能有个令人满意的答复
浏览:1268
加入我的收藏
楼主:
我在TSQLStoredProc中调用一个升工资的存储过程。 如下: CREATE PROCEDURE dbo.RaiseSalary @EID nvarchar(10) ='a00001', @RPercent float=0.5 AS begin print @EID Update BaseData Set YLPrice =YLPrice*(1+@RPercent) Where YID=@EID end GO 我在delphi的代码如下,没有参数了很正常,有参数就马上不行了。 主要表现为参数加不上。出现错误如下: list index out of bounds(0); 以下是我的代码: =========================================== procedure TForm1.Button1Click(Sender: TObject); //var //P1, P2: TParam; begin with Datamodule2.SQLStoredProc1 do begin params.Clear; StoredProcName := 'RaiseSalary'; params.Add; params[0].Name:='eid'; parambyname('eid').AsString:='a001'; //params.EndUpdate; execproc; { P1 := TParam.Create(Params, ptInput); P2 := TParam.Create(Params, ptInput); try Params[0].Name := '@EID'; Params[1].Name := '@RPercent '; //ParamByname('EID').AsString :='A00001'; Params[0].AsString:='A00001'; ExecProc; finally P1.Free; P2.Free; end; } end; end; ========================== 我试过好多种方法,也包括手工增加,都不行。 代码上屏闭部份都是我试过的方法
----------------------------------------------
-
作者:
2004/5/14 10:44:27
1楼:
up
----------------------------------------------
-
作者:
2004/5/14 11:18:18
2楼:
看看呀
----------------------------------------------
-
作者:
2004/5/14 12:58:45
3楼:
给个电话给我,我手把手给你指导,OK? (上次我发贴经过我测试过,绝对可以)
----------------------------------------------
-
作者:
kwbin (rainey)
★☆☆☆☆
-
盒子活跃会员
2004/5/14 13:11:53
4楼:
你的存储过程好像有问题吧 看看这个 Create procedure GetName @uid nvarchar(1), @usernam nvarchar(10)='' output AS set @username='hongchao' GO 详细请参考http://www.delphiun.com 《SQL Server存储过程编程经验技巧》
----------------------------------------------
我们的技术来自于大家的齐心合力!不要吝啬你的知识!
作者:
2004/5/14 13:24:54
5楼:
回 tangren : 我的电话:0596-2681610 让我打给您吧,让您破费怎么好意思。
----------------------------------------------
-
作者:
2004/5/14 13:28:38
6楼:
再发上次回贴 //////////////////// 谢谢tanger兄弟的热心帮助,我的问题还是没能最终圆满的解决。 我引用了tanger兄弟的代码,可是还一样的不行。 如果tanger兄弟有看贴的话,能不能再帮我查一下。 with Datamodule2.sqlstoreProc1 do begin StoredProcName := 'RaiseSalary'; params.Clear; p1:=TParam.Create(nil); p2:=Tparam.Create(nil); try p1.Name:='@EID'; p1.DataType:=ftString; p1.ParamType:=ptInput; Params.AddParam(p1); p2.Name:='@RPercent'; p2.DataType:=ftFloat; p2.ParamType:=ptInput; params.AddParam(p2); paramByname('@EID').AsString:='a00001'; paramByname('@RPercent').AsFloat:=0.5; //应该不是参数没加上去,否则paramByname('@eid')就会出'找不到'@eid'的错误了。 Execproc; finally p1.Free; p2.Free; end; //让您破费打电话,太不好意思了,我打给您吧。 我的电话:0596-2681610 QQ:25559749
----------------------------------------------
-
作者:
2004/5/14 14:11:09
7楼:
To tangren : 我的问题终于解决了,我把StoredProcName := 'RaiseSalary' 改为StoredProcName := 'dbo.RaiseSalary' 就OK了。 太谢谢您了。
----------------------------------------------
-