2009-10-15 12 views
28

Nigdy nie pracowałem z funkcjami bazy danych, ale mój obecny projekt tego wymaga. Muszę umieścić wspólną funkcję sql w funkcji, więc nie musimy wpisywać tego w naszym kodzie setki razy. Mam funkcję stworzoną, ale nie wiem jak jej użyć.Jak przetestować funkcję wartości stołowej w programie SQL Server Management Studio?

Oto kod funkcji:

 
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 
    ) 

Tak jak bym to wykorzystać w zapytaniu SQL? Czy po prostu używam SELECT fn_GetConfigurationByProfile ("DEFAULTPROFILE")?

To może być pytanie amatorskie, ale no cóż. Potrzebuję pomocy :)

Odpowiedz

37

chcesz użyć OD

np

select ... 

    FROM fn_GetConfigurationByProfile('DEFAULTPROFILE') 

SQL Server User-defined Functions

+0

Dziękuję za terminową odpowiedź. Czułem się jak totalny noob, nie mając tego, ponieważ był to funkcja ceniona przez tabelę:/ – Jeff

+0

czytaj tak, że dano mi nadzieję, że pomoże ci więcej :) – anishMarokey

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

go używać w klauzuli FROM, np:

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

Można również dołączyć go do tabel lub użyć klauzuli WHERE przeciwko niej, między innymi.

7

spróbować

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

Inni wykazali, jak można nazwać swoją funkcję tabelę w standardowe zapytanie. Czy mogę jednak zasugerować, że wolisz utworzyć widok, a nie funkcję?

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 

Następnie można go używać w SQL w taki sposób.

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

Będziesz mieć dodatkowe opcje indeksowania widoku, a także filtrowania na inne dane z łatwością, jeśli tego potrzebujesz.

+0

Dzięki, sprawdzę to. – Jeff

Powiązane problemy