客户端如何调用服务器端的存储过程?(50分)

  • 主题发起人 主题发起人 cnl
  • 开始时间 开始时间
C

cnl

Unregistered / Unconfirmed
GUEST, unregistred user!
客户端如何调用服务器端的存储过程?
 
和调用adoquery的方法一样。
如果过程有参数,
adostoredproc1.close;
adostoredproc1.parambyname('参数名').asstring:=edit1.text;
adostoredproc1.open;
如果没有参数,直接打开就可以了。
 
三层模式下,存储过程在应用程序服务器上。客户端用Dcom连接,该如何调用应用程序服务器上的存储过程?
 
with ClientDataset1do
begin
close;
CommandText:=存储过程名;
try
open;/execute;
//這裡用什麼和你的SQL有沒有返回數據集來選擇使用哪個
except
出錯處理
end;
end;
 
to glpttlb:
如果客户端在调用服务器端存储过程时,需传参数又该如何?谢谢!
 
adoquery.sql.add('exce 存储过程名 :参数1,:参数2:,:参数3 output,....');
adoquery.paremeters.parambyname('参数1').value"=....;
adoquery.excesql;
和在查询分析器里不是一样的用嘛
 
如有存储过程:stp ,有两个参数: @P1 int, @P2 varchar(100)
中间层用ADOStoredProc1连接stp,客户端用ClientDataSet1连接ADOStoredProc1,
在客户端我的调用方法如下:
var s1:string;
with ClientDataSetdo
begin
close;
params.ParamByName('@P1').asInteger:=1;
Params.ParamByName('@P2').asString:='aa';
Execute;
.........
end;
执行时就会遇到如下错误:不正确地定义参数对象
是否在ClientDataSet的params中需添加参数?我试过也不行!

 
在中间层连adoquery
客户端中用我的那个办法(只是adoquery换成clientdataset)
 
to 52free:
在中间层连adoquery,对其属性需如何设置?客户端的又该如何设置?
我刚学多层模式,还请大哥耐心指点。谢谢!
 
不需要任何设置
只要将中间层和adoquery相连的DataSetProvider1的
option属性中的poallowcommandtext设为true即可
 
to cnl
CommandText:=‘sql语句’
如:sql语句’=存储过程名 参数1,参数2
 
后退
顶部