怎样调用存储过程?(100+...)(100分)

  • 主题发起人 主题发起人 慕容乾坤
  • 开始时间 开始时间
邮箱地址:
TGHC@china.com
 
没那么复杂吧?我十分钟不用就搞好了。需要我说一下吗?
 
to 小花生:
那好,你说吧。
 
to shsshashssha:
你的例子邮过来了吗?
 
to 慕容乾坤
例子已发
 
首先在sql server写一个有返回值的存储过程,然后在应用服务器加一个adostoredproc和
datasetprovider,然后在客户端用clientdataset调用,记住,在客户端execute.就这么简单。
 
to shshsashssha:
老大快出现:
例子已收到
一切都调试好了,服务器注册了,机器名改了,数据库名改了,运行后
在客户端输入表名:JY 却出现以下错误:
Project p_client.exe raised exception class EConvertError with
message ''JY' is not a valid integer value'. Process stopped.
Use Step or Run to continue.
根据错误提示是JY不符合整形的数据类型,可是你在语句中已经将它转换成了
字符型了呀
clientdataset1.Params.ParamByName('@a').value:=strtoint(edit1.text);
~~~~~~~~~
可是就是出现了上面的错误,你说该怎样改?
 
唉!我来得好晚呀!我是这样写的,决对是最简单的!
ClientDataSet.CommandText:= 'exec ProcName "参数"
ClientDataSet.Execute;
一切都搞定,还用什么AdoStoredProc!
 
to shsshashssha:
还有一件事,您能不能将您以前说的远程调用(创建方法来调用存储过程)
也做成例子发给我学习一下?
例子发来再加100大分.十分感谢.
 
to silicon:
你的中间件上用什么从数据库取得数据?
是TDataset,TQuery,Tstoredproc?
 
用tquery调用
Query1.SQL.Add('Exec oadbo.getrecord "秘书二处","李丽",20,20,25');
oadbo.getrecord 为过程名,
"秘书二处","李丽",20,20,25 是参数
 
To容乾坤:
用的是TQuery就行了。
 
to silicon and chlei:
返回参数的值怎样得到呢?
 
好吧!!!你等等!!!
另外,你的设置不对。
〉〉在客户端输入表名:JY
在我的例子的输入框中应输入数字,因为例子所针对的表是
table a
a int//从客户端输入传递,所以要用strtoint(edit1.text)转换数据类型
b int
如果你要改动,应由你的表字段决定。
 
最好将数据操作做在中间件中,即在中间件定义远程方法,在客户端调用。
用clientdataset完成,不利于将商务逻辑与表示层分离。
 
to shsshashssha:
我明白了,是我对存储过程理解错了。
实在对不起。
另我已另开了一个问题给你200分,请你去拿吧。
此题的一百分就不能全给你了,其他几位我也想一些分。 :-)
http://www.delphibbs.com/delphibbs/dispq.asp?lid=560214
还有,还是要请你将创建方法来调用存储过程的例子邮来呀,再次感谢了。
 
对我来说真是好事多磨呀!
我已经调通了这个程序,一行起来后输入参数,返回值也正确。
但是麻烦又来了,再次输入参数,点击按钮,出现了下列错误
ClientDataSet1: Parameter "@a" not found
不能运行了。
再一次启动程序,第一次输入好使,再输入又不好使了,我不能
总是启动应用程序呀。
我估计错误是参数没有被刷新,我试着加了一条语句
clientdataset1.close;
~~~~~~~~~~~~~~~~~~~~~
clientdataset1.Params.ParamByName('@a').value:=strtoint(edit1.text);
clientdataset1.Params.ParamByName('@retval').value:=0;
clientdataset1.Execute;
edit2.text:=inttostr(clientdataset1.Params.ParamByName('@retval').value);
可是还是一样的出错。
所以还得请您帮我解决,谢谢。
 
shsshashssha 快出现。
 
最近很忙,现在发给你
 
谢谢,例子我已收到。
分我给你了。
 
后退
顶部