web-dev-qa-db-fra.com

Affectation du résultat de la fonction à la variable SQL et affichage

Migration du code asp.net (VB.net) pour utiliser des fonctions et des sous-programmes comme paramètres. Utilisation de MS Server Management Studio pour créer lesdites fonctions et sous-marins. Voudrais tester les fonctions depuis MS SMS avant de les tester via la page Web. Voici un exemple. Disons que j'ai une fonction appelée "dbo.getNumber"

J'essaye de le tester en utilisant ce qui suit:

USE [someDB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
declare @value int;

select @value = dbo.getNumber;

print @value;
go

Lorsque je tape F5 (pour exécuter la "requête"), il donne le message suivant:

"Le nom" dbo.getNumber "n'est pas autorisé dans ce contexte. Les expressions valides sont des constantes, des expressions constantes et (dans certains contextes) des variables. Les noms de colonne ne sont pas autorisés."

La fonction dbo.getNumber a été acceptée très bien, au fait. (Il s'agit de compter les enregistrements d'une base de données qui répondent à certains critères.)

J'espère que vous pouvez déduire du code qui ne fonctionne pas ce que j'essaie de faire.

Comment imprimer la valeur d'une fonction (à des fins de test) depuis SMS?

Solution correcte selon James Johnson, ci-dessous:

USE [someDB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
declare @value int;

select @value = dbo.getNumber();

print @value;
go

Notez les parens pour l'appel de fonction. Remarque également: intellisense dans SMS souligne dbo.getNumber () comme s'il s'agissait d'une erreur, mais l'exécution de la requête avec F5 fonctionne et génère le bon résultat.

20
elbillaf

Vous devez l'appeler comme ceci:

select @value = dbo.getNumber()
49
James Johnson