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


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

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

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


加好友 发短信
等级:八尾狐 帖子:1930 积分:17558 威望:0 精华:0 注册:2014/7/29 19:09:00
sql中的自定义函数生成的表在ft中如何调用  发帖心情 Post By:2016/10/31 14:43:00 [只看该作者]

如果SQL数据库中有一个自定义的函数名称为:Ufn_Myquerytable,执行结果是得到一个查询表
在foxtable中要如何调用这个表,如下吗?
Dim cmd As New SQLCommand 

   cmd.Connection Name = "数据源"  

 c cmd.CommandText = "Exec Ufn_Myquerytable"

   Dim t As DataTable = cmd.ExecuteReader


如如果函数有参数又要怎么写?

谢谢谢!




 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110572 积分:562750 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/10/31 15:50:00 [只看该作者]

cmd.CommandText = "select Ufn_Myquerytable('参数1','参数2')"

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


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

如果在sql数据库中的sql语句中引用了变量总提示出错,如下:
declare @dateflt nvarchar(100)
IF @dateEnd = ''
SET @dateflt = '进出日期 > ' + @datePd
ELSE 
SET @dateflt = '进出日期 >' + @datePd + ' AND 进出日期 <' + @dateEnd

BEGIN
  s elect * from 库存表
  where 仓库 = '成品仓' and ' + @dateflt + ' 
END
就想sql语句根据dateflt变量查询出不同的数据,但上面的红色部份不知怎么写,总提示:
“在应使用条件的上下文(在 'group' 附近)中指定了非布尔类型的表达式。”
请问要如何写,谢谢!




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


加好友 发短信
等级:二尾狐 帖子:509 积分:3547 威望:0 精华:3 注册:2012/11/13 15:49:00
  发帖心情 Post By:2016/11/7 1:28:00 [只看该作者]

多了‘ ’

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


加好友 发短信
等级:二尾狐 帖子:573 积分:2961 威望:0 精华:0 注册:2016/10/27 14:33:00
  发帖心情 Post By:2016/11/7 8:52:00 [只看该作者]

 不能直接执行拼接的sql语句的,要用exec函数执行以下,参考

 

http://www.cnblogs.com/ecosu/p/4399020.html

 


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


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

关键是这个sql语句前面还有其他语句用left join与它相联啊,
BEGIN
 s elect * from 出库单 where 出库单号 = 'abc-001'
left join
  exec(s elect * from 库存表 where 仓库 = '成品仓' and ' + @dateflt + ')
END
这样写也不对,这种变量 如:@dateflt = '进出日期 >' + @datePd + ' AND 进出日期 <' + @dateEnd
应该如何加入到第二个sql语句中的where条件中?

 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

exec( 'select * from 库存表 where 仓库 = ''成品仓'' and ' + @dateflt )

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


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

实际的SQL如下 ,但怎么写都报错啊,
LEFT JOIN
EXEC('s elect 产品编码,工序号,仓库,isnull(sum(入库数量),0) as 本期入库,isnull(sum(出库数量),0) as 本期出库,isnull(sum(进出数量),0) as 本期变动 from Stockinout 
where 进出类别 <> "盘点" and 品质状态 <> "未判定" AND 仓库 = ' +@ck+ ' and '+ @datePd + ' group by 产品编码,工序号,仓库') d
on c.产品编码 = d.产品编码 and c.工序号 = d.工序号 and c.仓库  = d.仓库

@ck是一个传入参数,@dtatPd是前面的sql语句定义的字符串变量是一个表达式。
关键字 'EXEC' 附近有语法错误。
消息 156,级别 15,状态 1,过程 tj_inoutstock,第 25 行
关键字 'LEFT' 附近有语法错误。

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


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

不断,简化你的语句,调试错误。

 

EXEC("s elect 产品编码,工序号,仓库,isnull(sum(入库数量),0) as 本期入库,isnull(sum(出库数量),0) as 本期出库,isnull(sum(进出数量),0) as 本期变动 from Stockinout 

where 进出类别 <> '盘点' and 品质状态 <> '未判定' AND 仓库 = '" +@ck+ "' and '"+ @datePd + "' group by 产品编码,工序号,仓库) d
on c.产品编码 = d.产品编码 and c.工序号 = d.工序号 and c.仓库  = d.仓库")

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


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

谢谢!那样更不正确,出错提示更多了。

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