以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 请狐爸高手解答foxtable 的质疑,关于对调用存储过程 ? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=56903) |
-- 作者:well_nick -- 发布时间:2014/9/15 9:21:00 -- 请狐爸高手解答foxtable 的质疑,关于对调用存储过程 ? 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 SQLCommandDim 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编辑过]
|
-- 作者:有点甜 -- 发布时间:2014/9/15 9:24:00 -- 存储过程,是不会返回值的。
要么你写成函数,函数才会返回值
http://blog.csdn.net/simpleiseasy/article/details/5816447
|
-- 作者:有点甜 -- 发布时间:2014/9/15 9:28:00 -- 或者你直接写 select * from #temp |
-- 作者:well_nick -- 发布时间:2014/9/15 9:43:00 -- 函数比起储存过程好像有限制吧?另外select * from #temp 这个储存过程建立的临时表,在程序里不能只能直接调用。 |
-- 作者:有点甜 -- 发布时间:2014/9/15 9:46:00 -- 函数和存储过程是一样的,只是它可以直接返回值。
1、要么你把这个#temp当做变量返回;
2、要么你这个#temp可以在外部访问得到。 |
-- 作者:well_nick -- 发布时间:2014/9/15 10:21:00 -- 谢谢,可以解决,不过就是绕了圈,没有正面解决这个问题。 |
-- 作者:逛逛 -- 发布时间:2014/9/15 10:50:00 -- http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=42263&replyID=&skin=1 |