代码之家  ›  专栏  ›  技术社区  ›  DotNetRussell

参数化列时fssql不工作

  •  1
  • DotNetRussell  · 技术社区  · 6 年前

    使用 F# , FsSql PostGres

    所以我用这个函数

    let getSqlParameter value = 
        let uniqueKey = Guid.NewGuid().ToString("N")
        let key = (sprintf "@%s" uniqueKey)
        (key,Sql.Parameter.make(key,value))
    

    给我一个动态传递的参数

    然后我附加到一个查询中,得到类似的结果

    select * from (select * from mytable) as innerQuery where @a29c575b69bb4629a9971dac2808b445 LIKE '%@9e3485fdf99249e5ad6adb6405f5f5ca%' 
    

    然后我把这些收集起来然后把它们传出去

    Sql.asyncExecReader connectionManager query parameters

    我现在遇到的问题是,当我不通过参数化引擎运行它时,它可以正常工作。当我这样做的时候,它就不起作用了。它只返回空集。

    我唯一能想到的是列名不能参数化。这是个问题,因为他们来自客户。有办法吗?

    1 回复  |  直到 6 年前
        1
  •  0
  •   DotNetRussell    6 年前

    好的,这里的答案是你不能参数化列名,就我所知。

    最后我做的是创建一个可接受列名称的白名单,然后比较进入白名单的内容。如果它不存在,我就把它扔掉。

    到目前为止是次优解。我真希望有办法做到这一点。