使用用户定义的日期类型时,tSQLt FakeTable失败

时间:2013-02-19 21:53:11

标签: tsql tsqlt

当我试图伪造使用用户定义数据类型的表时,我收到以下错误。

COLLATE子句不能用于用户定义的数据类型。{,1}

看起来它是tSQLt中的一个已知问题。

https://groups.google.com/forum/?fromgroups#!topic/tsqlt/AS-Eqy6BjlA

除了更改表定义外,还有一种解决方法吗?感谢。

1 个答案:

答案 0 :(得分:0)

感谢Chris Francisco,现在有一个补丁:

  

仅供参考我遇到了同样的问题并且能够通过挖掘来绕过它   进入tSQLt代码了一下。有一个名为的函数   Private_GetFullTypeName

     

该函数返回的最后一列名为“Collat​​ion”   如果变量@Collat​​ionName为null,则返回空字符串''。如果   您将“OR is_user_defined = 1”添加到空字符串的条件   我已经能够使用用户定义的数据类型伪造表。

     

我没有遇到任何奇怪的副作用,但我是   没有专家关于tSQLt(或一般的tSQLt)的内部工作原理   这可能会破坏其他地方的功能。

换句话说:

          CASE WHEN @CollationName IS NULL OR is_user_defined = 1 THEN ''
               ELSE ' COLLATE ' + @CollationName