Comment tester une fonction de valeur de Table dans SQL Server Management Studio?

Je n'ai jamais travaillé avec des 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 pour que nous n'ayons pas à la taper dans notre code des centaines de fois. J'ai la fonction créée, mais je ne sais pas comment l'utiliser.

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 puis-je utiliser ceci dans une requête sql? Est-ce que J'utilise juste SELECT fn_GetConfigurationByProfile ("DEFAULTPROFILE")?

c'est peut-être une question d'amateur, mais, oh bien. J'ai besoin d'aide :)

32
demandé sur Jeff 2009-10-15 16:31:35

5 réponses

vous souhaitez utiliser

ex :

select ...

    FROM fn_GetConfigurationByProfile('DEFAULTPROFILE')

SQL Server Fonctions définies par l'Utilisateur

41
répondu anishMarokey 2009-10-15 12:39:14

essayez ceci

SELECT * FROM dbo.fn_GetConfigurationByProfile('DEFAULTPROFILE')
7
répondu devio 2009-10-15 12:35:21
SELECT *
FROM dbo.fn_GetConfigurationByProfile('DEFAULTPROFILE')
3
répondu LukeH 2009-10-15 12:34:36

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

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

Vous pouvez également joindre des tables ou utiliser une clause where contre elle, entre autres choses.

1
répondu MartW 2009-10-15 12:34:57

D'autres ont montré comment vous pouvez appeler votre fonction de Table dans une requête standard. Cependant, puis-je suggérer que vous préféreriez 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

alors vous pouvez l'utiliser dans votre SQL comme ceci.

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

vous aurez les options ajoutées d'indexation de la vue et aussi de filtrage sur d'autres données facilement si vous en avez besoin.

1
répondu Robin Day 2009-10-15 12:42:44