2009-10-15 5 views
28

Je n'ai jamais travaillé avec les fonctions de base de données, mais mon projet actuel l'exige. J'ai besoin de mettre une requête sql commune dans une fonction afin que nous n'ayons pas à la taper dans notre code des centaines de fois. J'ai créé la fonction, mais je ne sais pas comment l'utiliser.Comment tester une fonction table dans SQL Server Management Studio?

Voici le code de fonction:

 
USE [DB_NAME] 
GO 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

ALTER FUNCTION [dbo].[fn_GetConfigurationByProfile] 
(
    @profileName AS NVARCHAR(50) 
) 
RETURNS TABLE 
AS 
RETURN 
    (
    -- Fill the table variable with the rows for your result set 
    SELECT system_settings_groups.ssg_id, system_settings_groups.ssg_name, 
      system_settings_groups.ssg_parent_group_id, system_settings_names.ssn_name, 
      system_Settings_names.ssn_display_name, system_settings_values.ssv_value 
    FROM system_settings_profiles 
    JOIN system_settings_values 
    ON  system_settings_profiles.ssp_id = system_settings_values.ssv_ssp_id 
    JOIN system_settings_names 
    ON  system_settings_names.ssn_id = system_settings_values.ssv_ssn_id 
    JOIN system_settings_groups 
    ON  system_settings_groups.ssg_id = system_settings_names.ssn_ssg_id 
    WHERE system_settings_profiles.ssp_name = @profileName 
    ) 

Alors, comment pourrais-je utiliser dans une requête SQL? Est-ce que je viens d'utiliser SELECT fn_GetConfigurationByProfile ('DEFAULTPROFILE')?

Cela peut être une question d'amateur, mais bon. Je dois aider :)

Répondre

37

vous souhaitez utiliser DE

Par exemple:

select ... 

    FROM fn_GetConfigurationByProfile('DEFAULTPROFILE') 

SQL Server User-defined Functions

+0

Merci pour la réponse rapide. Je me sens comme un total noob de ne pas avoir de cela puisque c'était une fonction de table:/ – Jeff

+0

lire le like que j'ai donné.hope qui vous aidera plus :) – anishMarokey

3
SELECT * 
FROM dbo.fn_GetConfigurationByProfile('DEFAULTPROFILE') 
1

Vous l'utilisez dans la clause FROM, par exemple:

SELECT .... 
FROM dbo.fn_GetConfigurationByProfile('DEFAULTPROFILE') 

Vous pouvez également le joindre aux tables ou utiliser une clause where contre, entre autres.

7

essayer cette

SELECT * FROM dbo.fn_GetConfigurationByProfile('DEFAULTPROFILE') 
1

D'autres ont montré comment vous pouvez appeler votre table fonction dans un requête standard. Cependant, puis-je suggérer que vous préfériez créer une vue plutôt qu'une fonction?

CREATE VIEW [dbo].[ConfigurationView] AS 
SELECT 
    system_settings_profiles.ssp_name, 
    system_settings_groups.ssg_id, 
    system_settings_groups.ssg_name, 
    system_settings_groups.ssg_parent_group_id, 
    system_settings_names.ssn_name, 
    system_Settings_names.ssn_display_name, 
    system_settings_values.ssv_value 
FROM system_settings_profiles 
JOIN system_settings_values 
ON  system_settings_profiles.ssp_id = system_settings_values.ssv_ssp_id 
JOIN system_settings_names 
ON  system_settings_names.ssn_id = system_settings_values.ssv_ssn_id 
JOIN system_settings_groups 
ON  system_settings_groups.ssg_id = system_settings_names.ssn_ssg_id 

GO 

Ensuite, vous pouvez l'utiliser dans votre SQL comme ceci.

SELECT 
    * 
FROM 
    ConfigurationView 
WHERE 
    ConfigurationView.ssp_name = 'DEFAULTPROFILE' 

Vous aurez l'option supplémentaire d'indexer la vue et de filtrer facilement d'autres données si vous en avez besoin.

+0

Merci, je vais vérifier cela. – Jeff

Questions connexes