起步软件技术论坛-X3

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: changansxy

【搞定】关于储存过程**

[复制链接]
 楼主| 发表于 2007-6-12 21:27:46 | 显示全部楼层
另外,对于六楼所说的。“只有象这样返回数据集的,才可以用存储过程数据集调用
否则,1楼的存储过程应该用TStrocProc调用
”也不是太明白,到底什么样的存储过程,是返回数据集,虚心学习一下
回复 支持 反对

使用道具 举报

发表于 2007-6-13 09:24:38 | 显示全部楼层
create proc testa
as
  select '1'
go

create proc testb
as
  declare @cc char(10)
  select @cc='1'
go

testa就返回了数据集,执行以后,可以看到

1.gif

3.09 KB, 下载次数: 97

回复 支持 反对

使用道具 举报

发表于 2007-6-13 09:25:05 | 显示全部楼层
执行testb的效果是

2.gif

3.09 KB, 下载次数: 96

回复 支持 反对

使用道具 举报

发表于 2007-6-13 09:25:59 | 显示全部楼层
上面的错误,请把你的存储过程完整贴上来
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-13 09:54:02 | 显示全部楼层

完整的存储过程

REATE PROCEDURE  pa_Bservice_DisCount @fcmonth char(7),@fgsno varchar(10),@fwgsbh varchar(10),@Discount decimal(18,2) output   AS
declare @month char(7)
declare @fupDiscount decimal(18,2) --上月折扣余额
declare @fDiscount decimal(18,2) --本月折扣金额
declare @fDiscount_db decimal(18,2) --本月调拨
declare @fDiscount_us decimal(18,2)  --本月报销
declare @fgsname varchar(20)

select @fgsname=FDISPLAYNAME from opendatasource('sqloledb','data source=192.168.0.250;user id=saassword=perfect').perfect_system.dbo.TDEPT where EBH = @fgsno
--select name from newshop..fgs where fgsno=@fgsno
--取上月份
select @month=max(fcmonth)  from Bservice_flag
--取上月折扣余额
select @fupDiscount=isnull(fDiscount,0) from Bservice_yj where fcmonth=@month and fgsno=@fgsno and fwgsbh=@fwgsbh
---取本月折扣金额
select @fDiscount=isnull(sum(fcash),0) from Bservice_zk where fcmonth=@fcmonth  and fgsno=@fgsno and fwgsbh=@fwgsbh
---取本月调拨
select @fDiscount_db=isnull(sum(fcash),0) from Bservice_db where fcmonth=@fcmonth  and fgsno=@fgsno and fwgsbh=@fwgsbh
---取本月报销

select  @fDiscount_us=isnull(sum(b.JE),0) from opendatasource('sqloledb','data source=192.168.0.250;user id=saassword=perfect').ywbx.dbo.FWGSBXZB a, opendatasource('sqloledb','data source=192.168.0.250;user id=saassword=perfect').ywbx.dbo.FWGSMXB b where a.SQBH = b.SQBH and a.LZBZ = 1 and a.BXYF = @fcmonth and  b.FWGSBH=@fwgsbh  and a.SQBM =@fgsname
--返回可报销折扣(动态计算:上月折扣余额+本月折扣金额+本月调拨-本月报销)
select @discount=isnull(@fupDiscount,0)+isnull(@fDiscount,0)+isnull(@fDiscount_db,0)-isnull(@fDiscount_us,0)
GO
回复 支持 反对

使用道具 举报

发表于 2007-6-13 10:48:51 | 显示全部楼层
我的存储过程
create  procedure testa
@abc int,
@aaa char(10) output
as
  select @aaa=cast(@abc as char(10))
  return @aaa
go

平台上的调用方法1:
var
  lStoredProc: TStoredProc;
begin
  lStoredProc := TStoredProc.Create(nil);
  with lStoredProc do
  try
    ConnectionString := 'DatabaseURL=Biz:\LZ\SJK1.DATABASE';
    StoredProcName := 'testa';
    Params.ParamByName('@abc').AsInteger:= 100;
    Execute;
    dialogs.showmessage(Params.ParamByName('@aaa').AsString);
  finally
    Free;
  end;

平台上的调用方法2:
var
  lStoredProc: TStoredProc;
begin
  lStoredProc := TStoredProc.Create(nil);
  with lStoredProc do
  try
    ConnectionString := 'DatabaseURL=Biz:\LZ\SJK1.DATABASE';
    StoredProcName := 'testa';
    Params.Clear;
    Params.CreateParam(TFieldType.ftString, '@RETURN_VALUE', TParamType.ptOutput);
    Params.CreateParam(TFieldType.ftInteger, '@abc', TParamType.ptInput);
    Params.CreateParam(TFieldType.ftString, '@aaa', TParamType.ptOutput);
    Params.ParamByName('@abc').AsInteger:= 100;
    Execute;
    dialogs.showmessage(Params.ParamByName('@aaa').AsString);
  finally
    Free;
  end;
回复 支持 反对

使用道具 举报

发表于 2007-6-18 09:25:40 | 显示全部楼层
楼主,问题解决了吗?
回复 支持 反对

使用道具 举报

发表于 2007-6-21 10:39:16 | 显示全部楼层
由于长时间没有反馈,先结贴了。
有问题请开新贴。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-1-11 22:55 , Processed in 0.040126 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表