2010-12-10 11 views
4

Supposons que j'ai une fonction SQL appelée MAGIC qui renvoie la valeur magique d'un nombre. Supposons en outre que je veux écrire une requête SQL qui retournera une liste de nombres d'une table SQL avec leurs valeurs magiques.Comment utiliser une fonction SQL dans ma requête SQL

Mon instinct est d'écrire

SELECT number, MAGIC(number) FROM NUMBERS; 

Cependant, cela renvoie le message d'erreur `MAGIC est pas un nom de fonction reconnue. Comment puis-je faire ce travail?

EDIT: Il semble que MAGIC soit configurée pour être une fonction table même si elle ne renvoie qu'une seule valeur. Mon DBA ne me donne accès à aucun code de fonction de base de données, je dois donc travailler de cette façon.

+2

Quel SGBD utilisez-vous? MySQL? Serveur SQL? –

+0

Faites-lui renvoyer une valeur unique. – Oded

+0

J'utilise Microsoft SQL Server –

Répondre

4

Si elle est une fonction valeur scalaire, qualifier complètement votre fonction dans le TSQL:

SELECT number, dbo.MAGIC(number) FROM NUMBERS; 
+0

J'ai déjà essayé ça. Je reçois le message d'erreur suivant: Impossible de trouver la colonne "dbo" ou la fonction définie par l'utilisateur ou l'agrégat "dbo.Fn_Org_GetAncestor", ou le nom est ambigu. –

+0

Vous avez une erreur, car elle recherche des fonctions à valeur scalaire lorsque vous l'utilisez dans cette syntaxe. –

0

Si sa fonction de valeur table puis faites juste ceci:

SELECT n.number, mn.number FROM numbers as n CROSS JOIN dbo.Magic(n.number) as mn 
0

Essayez d'utiliser la fonction comme un champ ... c'est pour TSQL.

SELECT number, 
-- start function 
(SELECT function_field_name FROM dbo.MAGIC(number)) AS magic_number 
-- end function 
FROM dbo.NUMBERS 
Questions connexes