Foxtable(狐表)用户栏目专家坐堂 → sql中的自定义函数生成的表在ft中如何调用


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

主题:sql中的自定义函数生成的表在ft中如何调用

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2016/11/7 19:40:00 [只看该作者]

 简化你的sql语句,别人无法帮你调试。

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


加好友 发短信
等级:超级版主 帖子:107783 积分:548260 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/11/7 20:08:00 [只看该作者]

贴出存储过程的完整内容看看

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


加好友 发短信
等级:七尾狐 帖子:1731 积分:11255 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2016/11/7 20:48:00 [只看该作者]

SQL中,查询的语句要么是全部是拼接字符,用exec进行运行。要么就是只能是参数形式(表名,列明等都不可以是参数)。
不可以一部分是拼接一部分是查询,所以你怎么写都是错的



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


加好友 发短信
等级:八尾狐 帖子:1916 积分:17140 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2016/11/7 21:41:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:test.txt

 

就是想在sql中引用变量,谢谢


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


加好友 发短信
等级:超级版主 帖子:107783 积分:548260 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/11/7 22:44:00 [只看该作者]

alter PROCEDURE [dbo].[tj_inoutstock]
(@ck nvarchar(16),
@datePd DATETIME,
@dateEnd datetime)
AS
declare @dateflt nvarchar(100)
IF @dateEnd = ''
SET @dateflt = '进出日期 > ' + @datePd
ELSE IF @datePd > '' AND @dateEnd = '' 
SET @dateflt = '进出日期 > ' + @datePd 
ELSE if  @datePd > '' AND @dateEnd > '' 
SET @dateflt = '进出日期 >' + @datePd + ' AND 进出日期 <' + @dateEnd
BEGIN
declare @sql nvarchar(max)
set @sql = 'select c.产品编码,C.品名,C.规格,c.工序号,c.仓库,c.盘点日期,c.实盘数量,d.本期入库,d.本期出库,d.本期变动,cast((isnull(实盘数量,0)+isnull(本期入库,0)-isnull(本期出库,0)) as decimal(18,2)) as 期末结存,cast((g.库存数量+g.不良数量+g.报废数量) as decimal(18,2)) As 当前数量
from 
(SeLECT b.产品编码,b.品名,b.规格,b.工序号,a.仓库,盘点日期,(实盘数量+实盘不良数量+实盘报废数量) As 实盘数量 FROM 盘点表 a inner join dbo.盘点明细 b on a.盘点编号 = b.盘点编号 and a.仓库 = ' +@ck + ' and 盘点日期 = @datePd
Union 
SeLECT 产品编码,品名,规格,工序号,仓库,'' AS 盘点日期,0 as 实盘数量 FROM 库存表 
WHERE 仓库 = '+@ck + ' AND NOT exists (SeLECT * FROM 盘点表 a inner join 盘点明细 b on a.盘点编号 = b.盘点编号 and a.仓库 = ' +@ck+ ' and 盘点日期 = @datePd  AND 库存表.产品编码= b.产品编码 AND 库存表.工序号= b.工序号 AND 库存表.仓库= a.仓库)
) as c
LEFT JOIN
(select 产品编码,工序号,仓库,isnull(sum(入库数量),0) as 本期入库,isnull(sum(出库数量),0) as 本期出库,isnull(sum(进出数量),0) as 本期变动 from Stockinout 
where 进出类别 <> ''盘点'' and 品质状态 <> ''未判定'' AND 仓库 = ' +@ck+ ' and ' + @dateflt  + 'group by 产品编码,工序号,仓库) d
on c.产品编码 = d.产品编码 and c.工序号 = d.工序号 and c.仓库  = d.仓库
LEFT JOIN 库存表 g ON g.产品编码 = c.产品编码 AND g.仓库 = c.仓库 AND g.工序号 = c.工序号'
exec(@sql)
END

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


加好友 发短信
等级:八尾狐 帖子:1916 积分:17140 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2016/11/7 23:06:00 [只看该作者]

谢谢,现在存储过程没有提示出错了,但前面设置变量的这句代码

SET @dateflt = '进出日期 > ' +@datePd+ ' AND 进出日期 < ' +@dateEnd

运行时会出错,提示如下:
从字符串转换日期和/或时间时,转换失败。

这个赋值语句哪里错了?


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


加好友 发短信
等级:超级版主 帖子:107783 积分:548260 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/11/7 23:26:00 [只看该作者]

SET @dateflt = '进出日期 > ''' +@datePd+ ''' AND 进出日期 < ''' +@dateEnd +''''

 回到顶部
总数 17 上一页 1 2