PB中执行存储过程,为什么一点反映都没有?

ysynb 2004-01-03 03:43:57
declare Pro_kcyue_report procedure for up_dtc_onway_kcyue_zh @yue=:ls_yue,@gs_userid=:gs_userid,@p_id=:gstr_user_p_id.p_id,@as_error='' output using sql_onway

execute Pro_kcyue_report ;

fetch Pro_kcyue_report into :ls_error;

close Pro_kcyue_report ;

messagebox("",ls_error)

//////
我把存储过程写得最简单,就只用print,也看不到任何结果。

谢谢!
...全文
67 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ysynb 2004-01-03
  • 打赏
  • 举报
回复
CREATE PROCEDURE up_dtc_onway_kcyue_zh
@yue char(7),@gs_userid varchar(10),@p_id varchar(20),@as_error varchar(255) output
AS
---->取得收数据
declare @ls_p_id varchar(20),@ppm char(2), @dlm1 char(2),@dlm3 char(2),@cpm varchar(20),@ggm char(5),@tjm char(2),@ddh char(12)
declare @dj1 decimal(8,2),@dj2 decimal(8,2),@dj3 decimal(8,2),@dwsl decimal(16,0),@f_zhengfu int,@je1 decimal(16,2),@je2 decimal(16,2)
declare @ls_v_id varchar(20),@v_name varchar(60),@dlmc1 varchar(20),@dlmc3 varchar(20),@cpmc varchar(60),@ggmc varchar(20),@tjmc varchar(20),@zlmc varchar(20)
declare @f_level char(1),@li_count int
declare @v_id1 varchar(20),@v_id2 varchar(20),@dw char(4),@p_id1 varchar(20),@p_id2 varchar(20),@p_name varchar(60)
---->清除汇总表
delete from dtc_onway_kcyue_zh where p_id=@p_id
if @@error <> 0
begin
select @as_error = description from master.dbo.sysmessages where error = @@ERROR
select @as_error = '清除汇总表内容出错,错误信息:' + @as_error
return
end
---->
declare cur_yue_zh_r cursor for
SELECT DISTINCT p_id,ppm, dlm1,dlm3,cpm,ggm,tjm,ddh,dj1 ,dj2,dj3,dwsl,dwdw,f_zhengfu, v_id1,v_id2,v_name,dlmc3,cpmc,ggmc,tjmc,zlmc
FROM DTC_onway_kcyue WHERE ( v_id = @p_id ) AND ( yue =@yue )

open cur_yue_zh_r
fetch next from cur_yue_zh_r into @ls_p_id,@ppm,@dlm1,@dlm3,@cpm,@ggm,@tjm,@ddh,@dj1,@dj2,@dj3,@dwsl,@dw,@f_zhengfu,@v_id1,@v_id2,@v_name,@dlmc3,@cpmc,@ggmc,@tjmc,@zlmc

WHILE @@FETCH_STATUS = 0
begin
----->查余额汇总表里是否有
select @li_count= count(1) from dtc_onway_kcyue_zh
where(p_id =@p_id)and(ppm=@ppm)and(dlm1=@dlm1)and(dlm3=@dlm3)and(cpm=@cpm)and(ggm=@ggm)and(ddh=@ddh)and(tjm=@tjm)
---->判断p_id是否是v_id的上级
select f_level = @f_level from DTC_onway_user_v_id where ( userid =@gs_userid ) AND ( v_id = @ls_p_id )

if @f_level = '0' and @li_count = 0 ---//是我的上级
begin
INSERT INTO DTC_onway_kcyue_zh
( p_id,p_id1,p_id2,ppm,dlm1,dlm3,cpm,ggm,ddh,tjm,dw,s_r_sl,s_r_dj1,s_r_dj2,s_r_dj3,
s_s_sl,s_s_dj1,s_s_dj2,s_s_dj3,x_r_sl,x_r_dj1,x_r_dj2,x_r_dj3,x_s_sl,x_s_dj1,x_s_dj2,
x_s_dj3,p_name,ppmc,dlmc1,dlmc3,cpmc,ggmc )
values(@p_id,@v_id1,@v_id2,@ppm,@dlm1,@dlm3,@cpm,@ggm,@ddh,@tjm,@dw,
@dwsl,@dj1,@dj2,@dj3,0,0,0,0,0,0,0,0,0,0,0,0,@v_name,@ppm, @dlmc1,@dlmc3,@cpmc,@ggmc )
end
if @f_level = '1' and @li_count = 0 ---//是我的下级
begin
INSERT INTO DTC_onway_kcyue_zh
( p_id,p_id1,p_id2,ppm,dlm1,dlm3,cpm,ggm,ddh,tjm,dw,s_r_sl,s_r_dj1,s_r_dj2,s_r_dj3,
s_s_sl,s_s_dj1,s_s_dj2,s_s_dj3,x_r_sl,x_r_dj1,x_r_dj2,x_r_dj3,x_s_sl,x_s_dj1,x_s_dj2,
x_s_dj3,p_name,ppmc,dlmc1,dlmc3,cpmc,ggmc )
values(@p_id,@v_id1,@v_id2,@ppm,@dlm1,@dlm3,@cpm,@ggm,@ddh,@tjm,@dw,0,0,0,0,0,0,0,0,
@dwsl,@dj1,@dj2,@dj3,0,0,0,0,@v_name,@ppm, @dlmc1,@dlmc3,@cpmc,@ggmc )
end
if @f_level = '0' and @li_count = 1 ---//是我的上级
begin
update DTC_onway_kcyue_zh
set s_r_sl= s_r_sl+@dwsl----,s_r_dj1=@dj1,s_r_dj2=@dj2,s_r_dj3=@dj3
where (p_id =@p_id)and(ppm=@ppm)and(dlm1=@dlm1)and(dlm3=@dlm3)and(cpm=@cpm)and(ggm=@ggm)and(ddh=@ddh)and(tjm=@tjm)

end
if @f_level = '1' and @li_count = 1 ---//是我的下级
begin
update DTC_onway_kcyue_zh
set x_r_sl= x_r_sl+@dwsl----,x_r_dj1=@dj1,x_r_dj2=@dj2,x_r_dj3=@dj3
where (p_id =@p_id)and(ppm=@ppm)and(dlm1=@dlm1)and(dlm3=@dlm3)and(cpm=@cpm)and(ggm=@ggm)and(ddh=@ddh)and(tjm=@tjm)
end
fetch next from cur_yue_zh_r into @ls_p_id,@ppm,@dlm1,@dlm3,@cpm,@ggm,@tjm,@ddh,@dj1,@dj2,@dj3,@dwsl,@dw,@f_zhengfu,@v_id1,@v_id2,@v_name,@dlmc3,@cpmc,@ggmc,@tjmc,@zlmc
END

close cur_yue_zh_r
DEALLOCATE cur_yue_zh_r

---->取得发数据
declare cur_yue_zh_s cursor for
SELECT DISTINCT v_id,ppm, dlm1,dlm3,cpm,ggm,tjm,ddh,dj1 ,dj2,dj3,dwsl,dwdw,f_zhengfu,p_id1,p_id2, p_name,dlmc3,cpmc,ggmc,tjmc,zlmc
FROM DTC_onway_kcyue WHERE ( p_id = @p_id ) AND ( yue =@yue )

open cur_yue_zh_s
fetch next from cur_yue_zh_s into @ls_v_id,@ppm,@dlm1,@dlm3,@cpm,@ggm,@tjm,@ddh,@dj1,@dj2,@dj3,@dwsl,@dw,@f_zhengfu,@p_id1,@p_id2,@p_name,@dlmc3,@cpmc,@ggmc,@tjmc,@zlmc

WHILE @@FETCH_STATUS = 0
begin
----->查余额汇总表里是否有
select @li_count =count(*) from DTC_onway_kcyue_zh
where (p_id =@p_id)and (ppm=@ppm) and(dlm1=@dlm1)and(dlm3=@dlm3)and(cpm=@cpm)and(ggm=@ggm)and(ddh=@ddh)and(tjm=@tjm)

---->判断v_id是否是v_id的上级
select f_level = @f_level from DTC_onway_user_v_id where ( userid =@gs_userid) and ( v_id = @ls_v_id)

if @f_level = '0' and @li_count = 0 ---//是我的上级
begin
INSERT INTO DTC_onway_kcyue_zh
( p_id,p_id1,p_id2,ppm,dlm1,dlm3,cpm,ggm,ddh,tjm,dw,s_r_sl,s_r_dj1,s_r_dj2,s_r_dj3,
s_s_sl,s_s_dj1,s_s_dj2,s_s_dj3,x_r_sl,x_r_dj1,x_r_dj2,x_r_dj3,x_s_sl,x_s_dj1,x_s_dj2,
x_s_dj3,p_name,ppmc,dlmc1,dlmc3,cpmc,ggmc )
values(@p_id,@p_id1,@p_id2,@ppm,@dlm1,@dlm3,@cpm,@ggm,@ddh,@tjm,@dw,0,0,0,0,
@dwsl,@dj1,@dj2,@dj3,0,0,0,0,0,0,0,0,@p_name,@ppm,@dlmc1,@dlmc3,@cpmc,@ggmc )
end
if @f_level = '1' and @li_count = 0
begin
INSERT INTO DTC_onway_kcyue_zh
( p_id,p_id1,p_id2,ppm,dlm1,dlm3,cpm,ggm,ddh,tjm,dw,s_r_sl,s_r_dj1,s_r_dj2,s_r_dj3,
s_s_sl,s_s_dj1,s_s_dj2,s_s_dj3,x_r_sl,x_r_dj1,x_r_dj2,x_r_dj3,x_s_sl,x_s_dj1,x_s_dj2,
x_s_dj3,p_name,ppmc,dlmc1,dlmc3,cpmc,ggmc )
values(@p_id,@p_id1,@p_id2,@ppm,@dlm1,@dlm3,@cpm,@ggm,@ddh,@tjm,@dw,0,0,0,0,
0,0,0,0,0,0,0,0,@dwsl,@dj1,@dj2,@dj3,@p_name,@ppm, @dlmc1,@dlmc3,@cpmc,@ggmc )
end
if @f_level = '0' and @li_count = 1
begin
update DTC_onway_kcyue_zh
set s_s_sl= s_s_sl+@dwsl--------,s_s_dj1=@dj1,s_s_dj2=@dj2,s_s_dj3=@dj3
where (p_id =@p_id)and(ppm=@ppm)and(dlm1=@dlm1)and(dlm3=@dlm3)and(cpm=@cpm)and(ggm=@ggm)and(ddh=@ddh)and(tjm=@tjm)
end
if @f_level = '1' and @li_count = 1
begin
update DTC_onway_kcyue_zh
set x_s_sl= x_s_sl+@dwsl--------,x_s_dj1=@dj1,x_s_dj2=@dj2,x_s_dj3=@dj3
where (p_id =@p_id)and(ppm=@ppm)and(dlm1=@dlm1)and(dlm3=@dlm3)and(cpm=@cpm)and(ggm=@ggm)and(ddh=@ddh)and(tjm=@tjm)
end
fetch next from cur_yue_zh_s into @ls_v_id,@ppm,@dlm1,@dlm3,@cpm,@ggm,@tjm,@ddh,@dj1,@dj2,@dj3,@dwsl,@dw,@f_zhengfu,@p_id1,@p_id2,@p_name,@dlmc3,@cpmc,@ggmc,@tjmc,@zlmc
end
--->生成数据报错
if @@error>0
begin
select @as_error = description from master.dbo.sysmessages where error = @@ERROR
select @as_error = '生成汇总表内容出错,错误信息:' + @as_error
rollback tran
return
end
else
begin
commit tran
end
close cur_yue_zh_s
DEALLOCATE cur_yue_zh_s
GO
sunshareforever 2004-01-03
  • 打赏
  • 举报
回复
在代码里写游标可以1
zjcxc 2004-01-03
  • 打赏
  • 举报
回复
存储过程如果是用print来输出结果,就只能在查询分析器中得到结果.

程序中调用是得不到结果的.
zjcxc 2004-01-03
  • 打赏
  • 举报
回复
你的存储过程代码?
bobohuang 2004-01-03
  • 打赏
  • 举报
回复
使用select 返回結果..或使用retrun或output
但不能用print
solidpanther 2004-01-03
  • 打赏
  • 举报
回复
messagebox?
print只在查询分析器里能看见打印出的结果,在程序里是捕捉不到的
想得到存储过程返回的值用
select .....来返回查询记录集

22,299

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧