Foxtable(狐表)用户栏目专家坐堂 → 表值函数参数过多的问题


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

主题:表值函数参数过多的问题

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/10 8:47:00 [显示全部帖子]

传入的时候,把单引号去掉即可。在你的函数里面,再给参数加上单引号,才行的。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/10 8:48:00 [显示全部帖子]

不然,就换成两个单引号,如

 

'''17060201'',''18010401'''


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/10 10:12:00 [显示全部帖子]

  Dim tr2 As WinForm.TreeView = e.Form.Controls("Tr_XG")
    Dim fids As String '定义订单节点集合
    For Each nd2 As WinForm.TreeNode In tr2.Nodes  '只遍历订单编号节点
        If nd2.checked = True Then
            fids = fids & "," & nd2.name
        End If
    Next
    If fids > "" Then
        fids = fids.trim(",")
        sql = "Se lect distinct " & seCols & " From ufn_mps05_11('" & fids & "') where " & Filter
   end if
 
------------------或者
 
  Dim tr2 As WinForm.TreeView = e.Form.Controls("Tr_XG")
    Dim fids As String '定义订单节点集合
    For Each nd2 As WinForm.TreeNode In tr2.Nodes  '只遍历订单编号节点
        If nd2.checked = True Then
            fids = fids & ",''" & nd2.name & "''"
        End If
    Next
    If fids > "" Then
        fids = fids.trim(",")
        sql = "Se lect distinct " & seCols & " From ufn_mps05_11('" & fids & "') where " & Filter
   end if

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/10 21:07:00 [显示全部帖子]

你函数要改的啊

 

CREATE FUNCTION test0 (@whereflt NVARCHAR(MAX))
RETURNS TABLE
AS RETURN
    SELECT *
    FROM table_1
    WHERE 产品编码 IN
          (
              SELECT DISTINCT 产品编码 FROM table_1 WHERE ',' + @whereflt + ',' like ',%' + 产品编码 + '%,'
          );

 

传入的参数这样

 

Select distinct 产品编码 From test0('123,abc') where 1 = 1


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/10 21:08:00 [显示全部帖子]

如果你确实要用in,那你就要用exec处理,如 http://blog.csdn.net/make1828/article/details/39498197

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/10 22:16:00 [显示全部帖子]

参考9楼代码,合成这样的字符串 '123,abc'

 

合成参考

 

Dim tr2 As WinForm.TreeView = e.Form.Controls("Tr_XG")

    Dim fids As String '定义订单节点集合
    For Each nd2 As WinForm.TreeNode In tr2.Nodes  '只遍历订单编号节点
        If nd2.checked = True Then
            fids = fids & "," & nd2.name
        End If
    Next
    If fids > "" Then
        fids = fids.trim(",")
        msgbox(fids)
        sql = "Se lect distinct " & seCols & " From ufn_mps05_11('" & fids & "') where " & Filter
   end if

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/11 10:02:00 [显示全部帖子]

回复13楼,列类型问题,如果是char(10)类型的列,就会自动带上空格的,不够10个字符后面补足空格。

 

如果是varchar就没问题。


 回到顶部