Вам потребуется несколько разных вариантов выбора - в зависимости от таблицы настроек - в вашем сохраненном процессе, чтобы вернуть разные наборы данных.
CREATE PROCEDURE dbo.YourProcedure(...)
AS BEGIN
DECLARE @Setting INT -- ?? whatever it is
SELECT @Setting = Choice FROM dbo.YourSettingsTable WHERE ....... ???
IF @Setting = 1
SELECT Name, Phone
FROM dbo.YourDataTable
ELSE
SELECT Name, Age, DOB, Phone, Salary
FROM dbo.YourDataTable
END
Однако использование этого подхода имеет свои опасности - поскольку хранимый процесс может вернуть один набор данных или совсем другой, ваш оптимизатор запросов SQL Server может принять очень хорошее решение о том, как получить доступ к данным для одного параметра - но когда Ваши настройки изменятся, план выполнения будет полностью устаревшим, что может привести к ужасной производительности ......
С другой стороны - может быть проще определить этот параметр перед вызовом вашего сохраненного процесса - а затем просто передать этот параметр в качестве параметра сохраненного процесса.
Или, что еще лучше: иметь отдельные сохраненные процедуры для каждого «сценария», а затем вызывать соответствующий хранимый процесс в зависимости от значения вашего параметра ....