当我试图伪造使用用户定义数据类型的表时,我收到以下错误。
COLLATE子句不能用于用户定义的数据类型。{,1}
看起来它是tSQLt中的一个已知问题。
https://groups.google.com/forum/?fromgroups#!topic/tsqlt/AS-Eqy6BjlA
除了更改表定义外,还有一种解决方法吗?感谢。
答案 0 :(得分:0)
感谢Chris Francisco,现在有一个补丁:
仅供参考我遇到了同样的问题并且能够通过挖掘来绕过它 进入tSQLt代码了一下。有一个名为的函数 Private_GetFullTypeName
该函数返回的最后一列名为“Collation” 如果变量@CollationName为null,则返回空字符串''。如果 您将“OR is_user_defined = 1”添加到空字符串的条件 我已经能够使用用户定义的数据类型伪造表。
我没有遇到任何奇怪的副作用,但我是 没有专家关于tSQLt(或一般的tSQLt)的内部工作原理 这可能会破坏其他地方的功能。
换句话说:
CASE WHEN @CollationName IS NULL OR is_user_defined = 1 THEN ''
ELSE ' COLLATE ' + @CollationName