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 :)
5 réponses
vous souhaitez utiliser
ex :
select ...
FROM fn_GetConfigurationByProfile('DEFAULTPROFILE')
essayez ceci
SELECT * FROM dbo.fn_GetConfigurationByProfile('DEFAULTPROFILE')
SELECT *
FROM dbo.fn_GetConfigurationByProfile('DEFAULTPROFILE')
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.
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.