关于delphi和存储过程相结合的例子。(100分)

  • 主题发起人 主题发起人 xiehong
  • 开始时间 开始时间
X

xiehong

Unregistered / Unconfirmed
GUEST, unregistred user!
SQL Server一个表aaa,表结构为:
字段名 数据类型
name char
number1 float
number2 float
1.创建存储过程,统计出表中 number1字段和number2字段的合计值。
2.在delphi中调用存储过程,并将number1字段和number2字段的合计值分别赋
值给变量bianliang1和bianliang2
 
SQL Server中:
CREATE PROCEDURE PRO_TOTAL
@V_NUM1 FLOAT OUTPUT,
@v_NUM2 FLOAT OUTPUT
AS
SELECT @V_NUM1=SUM(NUMBER1),@V_NUM2=SUM(NUMBER2) FROM aaa

delphi中:可以使用ADOQuery,也可用ADOStoredProc:
ADOConnection1.Open;(连数据库)
ADOStoredProc1.Prepared := True;(一定要写,否则容易出错)
ADOStoredProc1.ExecProc;
bianliang1:= ADOStoredProc1.Parameters.ParamValues['@V_NUM1'];
bianliang2:= ADOStoredProc1.Parameters.ParamValues['@V_NUM2'];
ADOStoredProc1.Close;
ADOConnection1.Close;
还有一点一定要注意:在Object Inspector窗口中打开ADOStoredProc的Edit Parameters
窗口,将RETURN_VALUE一项删除,一定要删除,否则会出错。


 
to 滴嗒:
写得是不错,不过Parameters应改为Params.
我还想知道使用Query执行存储过程的例子。谢谢。
 
太想当然了!
有storedproc在,你还想使用query来达到同样的功能?
 
to armyjiang:
"有storedproc在,你还想使用query来达到同样的功能?"
我是想不用StoredProc控件,改用Query控件如何执行存储过程,执行上述存储过程
代码应如何写。
 
sql.add ('exec 存储过程 参数1,...,参数n');
 
with Qurey1 do
begin
Close;
SQL.Text :='EXEC YourStoreProcedureName parameter1,parameter2 output';
Open;
end;
 
楼上的做法是不正确的,返回值无法提供。
在sql server中好象支持类似于这样的语句:
select resulta=func(1),resultb=func(2)
此时不能用存储过程,而要使用函数。

用query时不能使用需要返回值的存储过程。
 
用什么都没问题,其实还可以有不用任何Query参数的方法,非常简单的操作和使用方法!
想知道吗?分数太少了。。。:)
 
可以再加100分.
 
呵呵,分数少是和你开玩笑的了。其实你在这给我一千万分,
现实生活中我也是穷光蛋一个,又换不了钱的。:)
只是怕你解决好了,不需要我多此一举了,才会有此一说。
其实方法很简单,在Query里不要带参数。而是灵活运用Format函数,把参数传给它就不用改变Query里的参数了。
例如:
procedure TFrom1.Button1Click(Sender : TObject);
function OpenQuery(SQL : String; Query : TQuery) : Boolean;
begin
Query.Close;
Query.SQL.Text := SQL;
Query.Open;
Result := not Query.IsEmpty;
end;
begin
OpenQuery(Format('Exec ImaStudent "%s","%s","%d"',[
MyDefString, MyDefDateFormat, MyDefInteger]),
Query1);
end;
我一口气在这里写出来的,没调试过,如果有什么地方串错,相信你可以改吧。
这种做法就不用定制参数这么麻烦了。好了,说完了,我不是为了分数而来的。:)
 
zergwang,你这个回答好像不是别人要问的东西啊。
执行存储过程是可以,但是结果要怎么给delphi的变量赋值呢?
 
呵呵,也是,看错了。:)
 
xiehong,我是厦门的程序员,认识一下?ok?
QQ:1002575
Email:crc@esuntec.com
msn: iamwpc@hotmail.com
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部