如何调用sql server的存储过程

楼主
我是社区第10690位番薯,欢迎点我头像关注我哦~
调用语句为:{call dbo.wuliukaohe('${a}','${b}','${c}','${t1}','${t2}')},传值为:
a
b胡珊珊
c全部
T12012-08-13
T22012-08-13

finereport执行结果为:
Query:{call dbo.wuliukaohe('${a}','${b}','${c}','${t1}','${t2}')}
该语句没有返回结果集。

但在sqlserver里:exec wuliukaohe ''  ,'胡珊珊','全部','2012-08-13','2012-08-13'
返回很多结果:
太原分公司 CD201208090001 NULL 汽运整车 2012-08-09 001CR201208130002 2012-08-13 BD201208100017 235XC201208100019 胡珊珊 2012-08-11  4
太原分公司 CD201208090001 NULL 汽运整车 2012-08-09 001CR201208130004 2012-08-13 BD201208100017 229XC201208100045 胡珊珊 2012-08-11  4
太原分公司 CD201208090001 NULL 汽运整车 2012-08-09 001CR201208130008 2012-08-13 BD201208100017 120XC201208100020 胡珊珊 2012-08-11  4
请高手指点(finereport版本为6.5)

下为存储过程脚本:

SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
ALTER  proc [dbo].[wuliukaohe]   @ddlx varchar(50),@shenheren varchar(12),@fengongsi varchar(50),@startrk  varchar(12),@endrk varchar(12)
as
--单品
create table #temp
(
fengongsi varchar(50),--分公司
cgdh varchar(50),--采购单号
ddlx varchar(50),--订单类型
ysfs varchar(50),--运输方式
xdrq varchar(50),--下单日期
cgrkdh varchar(50),--采购入库单号
dhrq varchar(50) ,--到货日期
xsddh varchar(50),--销售订单号
xsckd varchar(50),--销售出库单
shr varchar(20),--销售订单审核人
qrch varchar(50),--确认出货日期
bzy varchar(200),--销售订单的备注一
--Iscq varchar(4),--是否超期
cqts  int--超期天数
)
----------------------------销售出库数据(数量换算成最小计量)
declare @strSQL varchar(8000) --动态SQL
declare @data_name varchar(100)
declare @fgs_name varchar(100)
declare wuliu cursor for
SELECT fchrDatabaseName+'.dbo' fchrDatabaseName, fchrEntlogin
FROM udrp_SysManage.dbo.Sys_UserDataBase
WHERE (fchrEntlogin like '%分公司'  or fchrEntlogin like '%宁海%' )
and (fchrEntlogin like ''+@fengongsi+'' or ''+@fengongsi+'' ='全部')
open wuliu
fetch next from wuliu into  @data_name,@fgs_name
while @@fetch_status<>-1
  begin  
     
set @strSQL='insert into #temp
select distinct  '''+@fgs_name+''',a.fchrorderreceiptno 采购单号,c.fchrreceiptstylename 订单类型,traff.fchrtrafficstyleName 运输方式 ,convert(varchar(100),a.fdtmdate,23) 下单日期,
cgrk.Fchrstockreceiptno 采购入库单号,convert(varchar(100),cgrk.fdtmdate,23) 到货日期 ,bd.fchrorderreceiptno 销售订单号,XC.Fchrstockreceiptno 销售出库单,emp.fchremployeename 销售订单审核人
,convert(varchar(100),xc.fdtmaffirm,23) 确认出货日期,bd.fchrnotes1 销售订单的备注一 ,
--(case when datediff(d,cgrk.fdtmdate,a.fdtmdate)>0 then ''否'' else ''是'' end )是否超期,
datediff(d,a.fdtmdate,cgrk.fdtmdate) 超期天数
from ' + @data_name+ '.orderreceipt a
left join ' +@data_name+ '.ReceiptStyle c on c.fchrreceiptstyleid=a.fchrreceiptstyleid
left join ' + @data_name+ '.TrafficStyle traff on traff.fchrtrafficstyleid=a.fchrtrafficstyleid
left join ' + @data_name+ '.orderreceipt bd on bd.fchrorderreceiptno=a.Fchrstockreceiptno
left join deli_app3.dbo.StockReceipt xc on xc.fchrorderreceiptno=bd.fchrorderreceiptno
left join deli_app3.dbo.employee emp on emp.fchremployeeid=xc.fchroperatorid
left join ' + @data_name+ '.preparein prein on prein.fchrorderreceiptno =bd.fchrorderreceiptno
     and prein.Fchrstockreceiptno=XC.Fchrstockreceiptno
left join  ' + @data_name+ '.StockReceipt cgrk on cgrk.fchrorderreceiptno=prein.fchrprepareinno
where  a.fchrorderreceiptno like ''CD%'' and datediff(d,a.fdtmdate,''2012-01-01'')<0
and a.fbitnoused =0
and (emp.fchremployeename like '''+@shenheren+''' or '''+@shenheren+''' ='''' )
and  cgrk.fdtmdate>='''+@startrk+''' and  cgrk.fdtmdate<='''+@endrk+'''
and (c.fchrreceiptstylename  in ('''+@ddlx+''') or '''+@ddlx+''' ='''' )
'
exec (@strSQL)

   fetch next from wuliu into  @data_name,@fgs_name
   end
close wuliu
deallocate wuliu
select * from #temp
drop table #temp
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

分享扩散:

沙发
发表于 2012-8-17 10:27:56
来自手机
在数据库操作下,如果成功就没问题阿,另外在FR 只要添加存储过程,如果有参数就写参数,在文档有帮助
板凳
发表于 2012-8-17 19:05:31
来自手机
Fortune 发表于 2012-8-17 10:55
目前的情况就是,相同的条件,sql server里执行没有任何问题,fn里面就没有结果

去问官网,7,0,1版本存储过程有问题
地板
发表于 2015-8-10 10:45:06
加入SET NOCOUNT ON   就行了
5楼
发表于 2018-2-7 10:07:22
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

7回帖数 1关注人数 6966浏览人数
最后回复于:2018-2-7 10:07

返回顶部 返回列表