2009-10-15 29 views
28

我从来没有使用数据库函数,但我目前的项目需要它。我需要将一个常见的sql查询放入一个函数中,所以我们不必在代码中输入数百次。我已经创建了该功能,但我不知道如何使用它。如何在SQL Server Management Studio中测试表值函数?

这里的功能代码:

 
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 
    ) 

那么我将如何在SQL查询中使用呢?我只使用SELECT fn_GetConfigurationByProfile('DEFAULTPROFILE')?

这可能是一个业余爱好者的问题,但哦。我需要帮助:)

回答

37

要使用FROM

如:

select ... 

    FROM fn_GetConfigurationByProfile('DEFAULTPROFILE') 

SQL Server User-defined Functions

+0

感谢您的及时回复。我觉得自己总是没有这样做,因为它是一个表值函数:/ – Jeff 2009-10-15 12:41:49

+0

看起来像我给的..hope,这将帮助你更多:) – anishMarokey 2009-10-15 12:43:30

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

您在FROM子句中,如使用它:

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

您也可以将其加入表或使用where子句反对,等等。

7

试试这个

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

其他人已经表明,你怎么可以在一个打电话给你的表函数标准查询。但是,我可以建议你可能更喜欢创建一个View而不是一个函数吗?

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 

然后你可以像这样在你的SQL中使用它。

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

如果您需要,您可以添加索引视图和过滤其他数据的附加选项。

+0

谢谢,我会检查了这一点。 – Jeff 2009-10-15 13:22:23

相关问题