Foxtable(狐表)用户栏目专家坐堂 → 请狐爸高手解答foxtable 的质疑,关于对调用存储过程 ?


  共有2852人关注过本帖树形打印复制链接

主题:请狐爸高手解答foxtable 的质疑,关于对调用存储过程 ?

帅哥哟,离线,有人找我吗?
well_nick
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:79 积分:1251 威望:0 精华:0 注册:2013/7/16 13:23:00
请狐爸高手解答foxtable 的质疑,关于对调用存储过程 ?  发帖心情 Post By:2014/9/15 9:21:00 [只看该作者]

foxtable 调用存储过程 ,exec mypro ,mypro 返回一个查询表。我搞了半天,返回值是空的。我的foxtable是试用版。 跟这个有关系吗?
 我在想是不是foxtable 改造了后,调用复杂的存储过程就不行或者有限制?请狐爸解答,另外有替代解决方法吗?
sql: 
ALTER PROCEDURE    [dbo].[gup_p_filtermoney]
AS
BEGIN
CREATE TABLE  #temp1(
[code] [varchar](10) NOT NULL,
[name] [varchar](50) NULL,
[run_time] [datetime] NOT NULL,
[amounts] [decimal](18, 5) NULL,
[counts] [int] NULL,
)
declare @day_count int ,@daysuc_count int
declare @days int
declare @run_time datetime
set @days=15
set @run_time=GETDATE()
 select @day_count= count(update_time) from 
 (select distinct update_time  
 from dde_fund_flow  
where   DATEPART(hour,update_time) =16
and   DateDiff(dd,update_time,getdate())<=@days ) a
set @daysuc_count=@day_count/2 +2
Insert into #temp1 (code,name,run_time,amounts,counts)  
select a.share_code AS code,a.name ,convert(varchar(23),@run_time,120) as run_time  ,a.amounts,b.counts from 
(select share_code,name ,SUM (net_amount) as amounts  
 from dde_fund_flow , shares 
where dde_fund_flow.share_code =shares.code 
 and DateDiff(dd,update_time,getdate())<=15 
 and  DATEPART(hour,update_time) =16
group by share_code,name
having  SUM (net_amount)>0  ) a , 
 (select share_code, count (net_amount) as counts from dde_fund_flow 
where  DateDiff(dd,update_time,getdate())<=15 
 and net_amount >0 and  DATEPART(hour,update_time) =16
group by share_code
having count (net_amount) >1 ) b
where a.share_code=b.share_code 
 and b.counts>@daysuc_count
 order by counts desc ,a.amounts desc
 select * from #temp1  
 end

button click :
 Dim sql,sqlstr As String
Dim  P_Cmd As new SQLCommand
Dim P_Dt,Pr_Dt As DataTable
'sql ="select * from shares"
P_Cmd.C
P_Cmd.CommandText ="Exec gup_p_filtermoney "
P_Dt=P_Cmd.ExecuteReader()
返回空记录,存储过程应返回记录集,大家有没有碰到过啊

我在 sql 后台执行 exec gup_p_filtermoney
是有数据的,返回#temp1  表数据。




[此贴子已经被作者于2014-9-15 9:27:00编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/9/15 9:24:00 [只看该作者]

 存储过程,是不会返回值的。

 

 要么你写成函数,函数才会返回值

 

 http://blog.csdn.net/simpleiseasy/article/details/5816447

 


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/9/15 9:28:00 [只看该作者]

 或者你直接写 select * from #temp

 回到顶部
帅哥哟,离线,有人找我吗?
well_nick
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:79 积分:1251 威望:0 精华:0 注册:2013/7/16 13:23:00
  发帖心情 Post By:2014/9/15 9:43:00 [只看该作者]

函数比起储存过程好像有限制吧?另外select * from #temp 这个储存过程建立的临时表,在程序里不能只能直接调用。

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/9/15 9:46:00 [只看该作者]

 函数和存储过程是一样的,只是它可以直接返回值。

 

 1、要么你把这个#temp当做变量返回;

 

 2、要么你这个#temp可以在外部访问得到。


 回到顶部
帅哥哟,离线,有人找我吗?
well_nick
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:79 积分:1251 威望:0 精华:0 注册:2013/7/16 13:23:00
  发帖心情 Post By:2014/9/15 10:21:00 [只看该作者]

谢谢,可以解决,不过就是绕了圈,没有正面解决这个问题。

 回到顶部
帅哥哟,离线,有人找我吗?
逛逛
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:1693 积分:12135 威望:0 精华:7 注册:2013/7/11 10:52:00
  发帖心情 Post By:2014/9/15 10:50:00 [只看该作者]


 回到顶部