错误 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)datetimedatetimenvarchar(15)nvarchar(4)xmlnvarchar(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() 调用

sql server2012 安装问题

Android - 未为 Cursor 类型定义 getType(int)

未为 C# 项目设置 OutputPath 属性