créer la fonction doit être la seule instruction dans le lot
J'obtiens cette erreur à partir de la fonction:
CREATE FUNCTION getLavel(@id int ,@lavel char)
RETURNS date
BEGIN
DECLARE @date date
select @date = (select authorization_date from Authorized WHERE diver_number = @id and @lavel =level_name)
return @date
END
GO
Quelle peut être la raison?
Té beaucoup.
Quelle est l'erreur que vous obtenez?
Parce que vous coincé tout sur une seule ligne. Pourquoi êtes-vous en utilisant une sous-requête pour remplir une variable? Tout cela ressemble à un bon candidat pour un intvf au lieu d'une fonction scalaire.
Est votre déclaration incluse avec les autres dans un script? Si oui, la déclaration devant votre fonction a besoin d'un
Parce que vous coincé tout sur une seule ligne. Pourquoi êtes-vous en utilisant une sous-requête pour remplir une variable? Tout cela ressemble à un bon candidat pour un intvf au lieu d'une fonction scalaire.
Est votre déclaration incluse avec les autres dans un script? Si oui, la déclaration devant votre fonction a besoin d'un
GO
à la fin.OriginalL'auteur user3885474 | 2014-07-28
Vous devez vous connecter pour publier un commentaire.
Transformer cela en une ligne de la fonction table. Ce sera mieux que la fonction scalaire. Aussi, vous ne devez PAS utiliser les tailles par défaut pour le personnage de types de données. Savez-vous ce que la longueur par défaut pour un char? Saviez-vous qu'il peut varier en fonction de l'utilisation?
j'ai essayé: 'ALTER TABLE de Plongée ADD CONSTRAINT getLavel VÉRIFIER (dbo.getLavel(guide, le"guide") != null); " mais j'obtiens cette erreur: Impossible de trouver la colonne "dbo" ou la fonction définie par l'utilisateur ou un agrégat de "dbo.getLavel", ou le nom est ambigu.
Vous êtes de la création de l'scalaire de sorte que vous pouvez l'utiliser comme une contrainte sur votre colonne? Vous n'avez pas de mentionner qu'à l'origine. Vous ne pouvez pas utiliser une fonction à valeur de table comme une contrainte hack. Vous aurez à revenir à une fonction scalaire.
Je suis désolé, Pouvez-vous expliquer ce qu'est l'différents en fonction scalaire?
Essayez ce lien. On peut l'expliquer plus clairement que je le peux. technet.microsoft.com/en-us/library/...
OriginalL'auteur Sean Lange
La fonction doit être la seule fonction dans la fenêtre de requête OU de la seule instruction dans le lot. Si il y a plusieurs instructions dans la fenêtre de requête, vous pouvez en faire le seul "dans le lot" en l'entourant d'ALLER de l'.
par exemple
OriginalL'auteur nicV
Vous avez besoin d'ajouter de RETOUR avant la FIN de l'instruction
Qui devrait résoudre votre problème, c'est ce qui fixe la mienne. 😀
OriginalL'auteur MacWilson08
Assurez-vous que cette déclaration est la seule la seule sql dans votre fenêtre de requête avant de l'exécuter.
Ou vous pouvez mettre en surbrillance la déclaration de la fonction et de l'exécuter
OriginalL'auteur WantToBeAnonomous
OriginalL'auteur MR.Rabin Shrestha
Ce que résolu pour moi, j'étais tout en essayant de créer la fonction à l'intérieur d'un contexte de transaction - qui n'a pas de sens à partir d'un Serveur SQL point de vue. Les Transactions sont des données, des fonctions pas.
Prendre l'instruction CREATE FUNCTION de la transaction, puis l'envelopper dans GO
OriginalL'auteur Michael Malone