Ответ 1
вы хотите использовать ОТ
Например:
select ...
FROM fn_GetConfigurationByProfile('DEFAULTPROFILE')
Я никогда не работал с функциями базы данных, но мой текущий проект требует этого. Мне нужно поставить общий sql-запрос в функцию, поэтому нам не нужно вводить его в наш код сотни раз. У меня есть функция, но я не знаю, как ее использовать.
Здесь код функции:
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')?
Это может быть любительский вопрос, но хорошо. Мне нужна помощь:)
вы хотите использовать ОТ
Например:
select ...
FROM fn_GetConfigurationByProfile('DEFAULTPROFILE')
попробуйте это
SELECT * FROM dbo.fn_GetConfigurationByProfile('DEFAULTPROFILE')
SELECT *
FROM dbo.fn_GetConfigurationByProfile('DEFAULTPROFILE')
Вы используете его в предложении FROM, например:
SELECT ....
FROM dbo.fn_GetConfigurationByProfile('DEFAULTPROFILE')
Вы также можете присоединить его к таблицам или, помимо прочего, использовать предложение where.
Другие показали, как вы можете вызвать функцию Table в стандартном запросе. Однако могу ли я предположить, что вы можете предпочесть создать представление, а не функцию?
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'
У вас будут дополнительные возможности индексирования представления, а также фильтрация по другим данным, если вам это нужно.