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


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

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

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


加好友 发短信
等级:八尾狐 帖子:1916 积分:17140 威望: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


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

谢谢谢!




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


加好友 发短信
等级:八尾狐 帖子:1916 积分:17140 威望: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' 附近)中指定了非布尔类型的表达式。”
请问要如何写,谢谢!




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


加好友 发短信
等级:八尾狐 帖子:1916 积分:17140 威望: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条件中?

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


加好友 发短信
等级:八尾狐 帖子:1916 积分:17140 威望: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' 附近有语法错误。

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


加好友 发短信
等级:八尾狐 帖子:1916 积分:17140 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2016/11/7 19:36:00 [显示全部帖子]

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

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


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

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

 

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


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


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

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

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

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

这个赋值语句哪里错了?


 回到顶部