错误 SQL Server 2012:未为函数 X 提供参数
Posted
技术标签:
【中文标题】错误 SQL Server 2012:未为函数 X 提供参数【英文标题】:Error SQL Server 2012: Parameters were not supplied for the function X 【发布时间】:2014-11-06 13:56:19 【问题描述】:我定义了一个表值函数X
,有11 个参数。它们的类型分别为nvarchar(30)
、nvarchar(30)
、datetime
、datetime
、nvarchar(15)
、nvarchar(4)
、xml
、nvarchar(8)
、nvarchar(80)
、bit
和@9这是针对 Microsoft SQL Server 2012 的。当我使用
select * from
X('A','B','2014-01-01','2014-12-31',null,null,'<C><D>E</D></C>',null,null,1,0)
我遇到了这个错误:
Parameters were not supplied for the function X
显然与以下两种不同:
An insufficient number of arguments were supplied for the procedure or function X
Procedure or function X has too many arguments specified.
这是否与两个预期的参数值null
有关?如何克服这个问题并定义/调用一个表值函数,例如这个有 11 个参数的函数,其中一些可能带有 null
?
更新如果我传入任意字符串而不是null
,问题仍然存在。所以肯定还有另一个(也许是愚蠢的)错误。
【问题讨论】:
你能给出 X 的函数声明的第一行吗? 我已经定义了一个像你描述的那样的电视,并用你的查询来测试。它执行没有任何问题。肯定是函数定义有问题 能否请您提供功能。 【参考方案1】:定义像您描述的那样的函数的正确方法如下:
CREATE FUNCTION X
(
-- Add the parameters for the function here
@a nvarchar(30),
@b nvarchar(30),
@c datetime,
@d datetime,
@e nvarchar(15),
@f nvarchar(4),
@g xml,
@h nvarchar(8),
@i nvarchar(80),
@j bit,
@k bit
)
RETURNS
@output TABLE
(
-- Add the column definitions for the TABLE variable here
data nvarchar(250)
)
AS
BEGIN
INSERT INTO @output (data)
VALUES (@a + @b)
RETURN
END
GO
根据上面的定义,这个:
select * from
X('A','B','2014-01-01','2014-12-31',null,null,'<C><D>E</D></C>',null,null,1,0)
产生以下结果:
data
----
AB
【讨论】:
+1 对我来说真的是一个愚蠢的错误。我在函数X
中的表被称为@X
,我使用的是INSERT INTO X
而不是INSERT INTO @X
。前者(几乎)看起来像一个递归调用,因此...
@Drux - 我刚刚犯了同样的错误,这帮助我找到了它。话虽如此,错误消息可能会更清晰。【参考方案2】:
如果您的函数不需要任何参数,但您仍然收到此错误:
没有为函数提供参数
select * from [dbo].[myfunction]
尝试在函数调用后添加():
select * from [dbo].[myfunction]()
【讨论】:
以上是关于错误 SQL Server 2012:未为函数 X 提供参数的主要内容,如果未能解决你的问题,请参考以下文章
SQL 报告生成器错误:未为“公共函数日(日期值作为日期)作为整数”的参数“日期值”指定参数
求解!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!SQL Server 2012 出现以下错误:
致命错误:对 SQL SERVER 2012 的非对象 XAMPP 上的成员函数 query() 调用