以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  存储过程里含有临时表 无法执行  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=189922)

--  作者:aoc103
--  发布时间:2024/1/4 21:01:00
--  存储过程里含有临时表 无法执行
 C REATE PROCEDURE MyProcedure 
AS
BEGIN

w ith 流水表 as 
(S ELECT   a.填单日期, \'采购销售单\' 单据类型, a.单据编号, a.客户编号, d .客户名称, e.供货商编号, e.供货商名称, 
                                 b.商品编号, c.品牌, c.型号, c.片数, b.等级, b.色号, b.数量, b.销售片价, b.优惠金额, 
                                 c.片数 * b.销售片价 * b.数量 AS 应收增加, 0 应收减少, 0 结欠金额
                 FROM      采购销售表_主表 AS a INNER JOIN
                                 采购销售表_明细 AS b ON a._Identify = b.父表ID INNER JOIN
                                 TBL_商品表 AS c ON b.商品编号 = c.商品编号 INNER JOIN
                                 TBL_客户表 AS d ON a.客户编号 = d .客户编号 INNER JOIN
                                 TBL_供货商表 AS e ON a.供货商编号 = e.供货商编号
                 UNION ALL
                 S ELECT   a.填单日期, a.单据类型, a.单据编号, a.收款单位编号 AS 客户编号, d .客户名称, \'\' 供货商编号, \'\' 供货商名称, 
                                 \'\' 商品编号, \'\' 品牌, \'\' 型号, \'\' 片数, \'\' 等级, \'\' 色号, \'\' 数量, \'\' 销售片价, \'\' 优惠金额, 0 应收增加, 
                                 b.金额 AS 应收减少, 0 结欠金额
                 FROM      收款表_主表 AS a INNER JOIN
                                 收款表_明细 b ON a._Identify = b.父表ID INNER JOIN
                                 TBL_客户表 AS d ON a.收款单位编号 = d .客户编号)


    -- 创建临时表

    S ELECT * INTO #销售流水表 FROM 流水表  --这里含有临时表 就没有办法执行数据 在窗口里 表格不显示任何数据
    -- 查询临时表数据并输出结果
    S ELECT * FROM #销售流水表;
DROP TABLE #销售流水表;

END;

--  作者:有点蓝
--  发布时间:2024/1/4 21:32:00
--  
Foxtable不支持在存储过程里返回临时表的数据。考虑建一个永久表放临时数据
--  作者:HappyFt
--  发布时间:2024/1/5 16:19:00
--  
应该不会吧?有点疑问,请教一下蓝老师
我的项目中的储存过程中就用了大量的临时表,都是在最后查询数据绑定到ft的窗口表中的,
下面是储存过程最后的代码:
--汇总生产指令单的所有相关数量
        SELECT  a.指令单号 ,
                a.产品编码 ,
                t1.品名 ,
                t1.规格 ,
                a.订单数量 ,
                a.需求数量 ,
                a.交货日期 ,
                a.制单日期 ,
                a.生产车间 ,
                a.物料编码 ,
                t2.品名 AS 物料名称 ,
                t2.规格 AS 物料规格 ,
                a.用量PCS ,
                b.累计领料 ,
                c.累计退料 ,
                a.用量PCS - ISNULL(b.累计领料, 0) + ISNULL(c.累计退料, 0) AS 未领料量 ,
                a.单根产量 ,
                a.单根产量 * ( ISNULL(b.累计领料, 0) - ISNULL(c.累计退料, 0) ) AS 领料产量 ,
                d.完工数量 AS 生产入库 ,
                d.不合格数量 ,
                fg.修复数量 ,
                CASE WHEN bf.报废数量 > 0 THEN bf.报废数量
                     WHEN fg.报废数量 > 0 THEN fg.报废数量
                     ELSE 0
                END AS 报废数量 ,
                a._Identify
        FROM    #scd a
                LEFT JOIN #scll b ON a.指令单号 = b.生产单号
                                     AND b.产品编码 = a.产品编码
                                     AND b.物料编码 = a.物料编码
                                     AND b.生产车间 = a.生产车间
                LEFT JOIN #sctl c ON a.指令单号 = c.生产单号
                                     AND c.产品编码 = a.产品编码
                                     AND c.物料编码 = a.物料编码
                                     AND c.生产车间 = a.生产车间
                LEFT JOIN #scrk d ON a.指令单号 = d.生产单号
                                     AND d.产品编码 = a.产品编码
                                     AND d.生产车间 = a.生产车间
                LEFT JOIN #fg fg ON a.指令单号 = fg.生产单号
                                    AND fg.产品编码 = a.产品编码
                                    AND fg.生产车间 = a.生产车间
                LEFT JOIN #bf bf ON a.指令单号 = bf.生产单号
                                    AND bf.产品编码 = a.产品编码
                                    AND bf.生产车间 = a.生产车间
                LEFT JOIN dbo.产品编码 t1 ON t1.产品编码 = a.产品编码
                LEFT JOIN dbo.产品编码 t2 ON t2.产品编码 = a.物料编码;
然后在ft的前端用类似下面的代码绑定数据到表中的,
        cmd.CommandText = "Exec usp_scd20 \'" & cj & "\',\'" & r("产品编码") & "\',\'" & ds & "\',\'" & de & "\'"
        dt = cmd.ExecuteReader
        tbl2.StopRedraw
        tbl2.DataSource = dt
难到这样不行?但从来没有出现过问题啊,谢谢!

--  作者:有点蓝
--  发布时间:2024/1/5 16:32:00
--  
这个我也无法理解。foxtable使用的数据库驱动是oledb,oledb驱动本身在调用SqlServer存储过程返回临时表确实是有问题的
--  作者:HappyFt
--  发布时间:2024/1/5 16:44:00
--  
说的我心里拔凉拔凉的,会不会哪天出问题啊?我的所有项目中都这样用,最早的都十年了,也没有哪一家公司出现问题啊