我已经定义了一个表值函数 X
,它有 11 个参数。它们的类型是nvarchar(30)
, nvarchar(30)
, datetime
, datetime
, nvarchar( 15)
, nvarchar(4)
, xml
, nvarchar(8)
, nvarchar(80)
>、bit
和 bit
分别。这是针对 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
,问题仍然存在。所以肯定还有另一个(也许是愚蠢的)错误。
最佳答案
定义函数的正确方法如下:
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
关于sql - 错误 SQL Server 2012 : Parameters were not supplied for the function X,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26781254/