注册 | 登录 忘记密码? 51cto首页 | 博客 | 论坛 | 招聘
热点文章 [业内传闻]今天,7月25日..
 帮助

Delphi下调用有返回值的存储过程。


2007-10-20 12:13:30
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://fxh7622.blog.51cto.com/63841/46930
今天在BLOG中瞎逛的时候看见“雨寒 ”写的一篇关于Delphi中如何调用存储过程的文章。写的很详细。崇拜之余就找起了他文章中的毛病(同行相轻啊,鄙视自己一下)。发现他的文章中没有提到对于具有返回值的存储过程的调用方法。觉得应该写上,于是马上动手。
对于存储过程的调用使用的控件正如“雨寒”所说的那样使用TADOStoredProc控件。
创建方法和连接都很简单。
StorPro:=TADOStoredProc.Create(nil);
 
然后定义存储过程的名字和输入参数:
StorPro.ProcedureName:=ProName;
StorPro.Parameters.clear;
StorPro.Close;
StorPro.Parameters.CreateParameter('as_gh', ftString, pdInput , 10, NULL);
StorPro.Parameters.CreateParameter('as_in', ftString, pdInput , 100, NULL);
StorPro.Parameters.CreateParameter('as_out', ftString, pdOutput , 255, NULL);
大家可能看到函数CreateParameter中的第3个参数,pdInput 就是用来定义此参数是输入参数函数输出参数。具体的参数函数是:存储过程参数名称、类型、输入输出参数类型、长度还有就是最后一个参数Delphi帮助中说是Value: OleVariant,不过我没有用过。一般我赋值为NULL。
上面的过程是定义这个存储过程的参数。在调用的时候自然需要给参数赋值。
赋值过程为(其中WorkID和DataID是事先定义好的两个变量):
StorPro.Parameters[0].value :=WorkID;
StorPro.Parameters[1].value :=DataID;
赋值完成后运行此存储过程:
StorPro.prepared:=true;
StorPro.ExecProc;
好了存储过程调用以后,我们希望得到这次存储过程返回的参数'as_out'的值。
fxh7622:=StorPro.Parameters.parambyname('as_out').Value;
这个时候存储过程返回的值就保存在了fxh7622里面。
其实获得存储过程的返回值比较简单,希望对大家有帮助。
 
 
 
 
 
 
 

 

本文出自 “狗窝” 博客,请务必保留此出处http://fxh7622.blog.51cto.com/63841/46930





    文章评论
 
2008-03-07 10:49:42
谢谢

帮了大忙

2008-03-07 10:53:21
长度还有就是最后一个参数Delphi帮助中说是Value: OleVariant,
不过我没有用过。一般我赋值为NULL。

这个值你可以是变量就是向存储过程中传入的变量值
我是这样写的
adosp.Parameters.CreateParameter('in',ftString,pdInput,10,guser);

其中“guser” 是一个用户的ID 是一串数字 是个变量

 

发表评论

昵   称:
验证码:  点击图片可刷新验证码  博客过2级,无需填写验证码
内   容: