我有一个 Transact SQL 脚本,它创建一个表和一个基于该表的表值函数,我使用 SQLCMD 模式从另一个脚本调用该表;例如:
:r .\MyTableScript.sql
在数据库生成时和执行时,一切都运行良好。现在我将脚本分成两个文件来分离函数,我最终在“主脚本”中得到了这样的东西:
:r .\MyTableScript.sql
:r .\MyTableFunctionScript.sql
一切都可以很好地生成数据库,但是当我调用该函数时,我收到错误“没有为该函数提供 216 参数”。
这很奇怪。
如果我使用错误数量的参数调用函数,我会收到正确的消息,例如“...无效数字或参数...”;如果我用错误类型的参数调用函数,那么我会再次收到有关错误类型参数的适当消息。
但是当我用正确的参数调用函数时,我得到了上述消息。
我知道 CREATE FUNCTION 必须是批处理中的第一个语句,它是。我还尝试在“正确”的地方使用和不使用分号。
现在,我将函数放回与表本身相同的脚本文件中(就在表的 DDL 之后)并重新生成数据库,现在一切都可以正常工作了。
我可以这样(表和函数在一个大脚本文件中),但我更愿意将表和函数脚本拆分为两个 SQL 脚本文件。
我究竟做错了什么?