表值函数混合列

Haw*_*xby 1 sql-server sql-server-2005 sql-server-2008

我正在通过多个来回的数据库调用将一些在应用程序中处理的sql逻辑切换到sql存储过程和函数中,这样一个调用可以完成以前很多的工作.

大部分逻辑需​​要在不同的数据子集之间进行连接,因此我将这些逻辑构建到函数中以便于轻松连接.这很好但是时不时的功能似乎有点疯狂,并开始混淆我的列.我认为这是由于我正在进一步改进堆栈而进行的,因为我进一步开发了应用程序但是我不确定.

以下是与语言锁定相关的列规范.

列规格

以下是混合列的功能.它调用另一个具有明显更复杂逻辑的函数,因此我不打算发布它,而是直接调用该函数的结果.

功能规格

最后是对有问题的函数和用作其数据源的内部函数的查询结果.源函数正确地返回数据,但是来自另一个函数的select*导致数据完全混淆,这显然导致逻辑进一步完全失败.

功能结果

有什么想法到底是怎么回事?是否因为我怀疑其他变化的结果?如果是这样,有没有办法级联?

谢谢

编辑进一步检查发现有问题的功能缺少左侧两列,尽管选择*

Pon*_*ife 9

您可能需要使用sp_refreshsqlmodule来修复元数据.很可能你已经删除并重新创建了底层函数,而没有对调用函数做同样的事情.

除此之外,还要记住以下几点:

  • 切勿使用SELECT *; 总是命名列
  • 考虑使用WITH SCHEMABINDING来避免对底层函数的未被注意的更改