J'ai défini une fonction table X
avec 11 parameters. Leurs types sont nvarchar(30)
, nvarchar(30)
, datetime
, datetime
, nvarchar(15)
, nvarchar(4)
, xml
, nvarchar(8)
, nvarchar(80)
, bit
et bit
respectivement. Ceci est pour Microsoft SQL Server 2012. Lorsque j'appelle la fonction avec
select * from X('A','B','2014-01-01','2014-12-31',null,null,'<C><D>E</D></C>',null,null,1,0)
Je rencontre cette erreur:
Parameters were not supplied for the function X
Il est apparemment différent des deux suivants:
An insufficient number of arguments were supplied for the procedure or function X Procedure or function X has too many arguments specified.
Est-ce lié à deux des valeurs de paramètre prévues étant null
? Comment puis-je surmonter le problème et définir / appeler une fonction table telle que celle-ci avec 11 parameters, dont certains peuvent porter null
?
UPDATE Le problème persiste si je passe des strings arbitraires au lieu de null
. Donc, il doit y avoir une autre erreur (peut-être stupide).
La façon correcte de définir une fonction comme celle que vous décrivez est la suivante:
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
Compte tenu de la définition ci-dessus, ceci:
select * from X('A','B','2014-01-01','2014-12-31',null,null,'<C><D>E</D></C>',null,null,1,0)
donne le résultat suivant:
data ---- AB