Я пытаюсь создать хранимую процедуру, которая принимает значения
- @ field_name
- @ some_rule
- @ from_table
- @to_table
и создает запрос.Ниже приведен код из моей хранимой процедуры:
CREATE PROCEDURE spBuildQuery
@field_name nvarchar(max), -- Will take field name as input
@some_rule nvarchar(max), -- Will take Some rule as a command/input from user
@from_table nvarchar(max), --to take value of table from which value to be taken
@to_table nvarchar(max), --Table where the results should be stored
@final_query nvarchar(max) OUTPUT --Output of final query
AS
IF @some_rule = 'Remove blank rows'
BEGIN
SELECT @final_query = 'SELECT * into temp1 FROM '+@from_table + ' WHERE '+ @field_name+ ' IS NOT NULL'
END
ELSE IF @some_rule = 'Rule2'
BEGIN
SELECT @final_query = 'SELECT * into temp1 FROM'+ @from_table + 'WHERE '+ @field_name+ ' IS RULE2'
END
ELSE
BEGIN
SELECT @final_query = 'Missing Value(s)'
END
--Executing the query by parsing @final_query value into @query and priting it.
DECLARE @query nvarchar(max)
EXECUTE spBuildQuery 'A Field', 'Rule2', 'Table 1', @query OUTPUT
PRINT @query
EXECUTE sp_executesql @query
Мое намерение состоит в том, чтобы создавать запросы на основе пользовательского ввода, например: Правила, которые пользователь хочет реализовать, к какому полю должны применяться правила, и затем отображать результатэтот запрос к таблице, то эта таблица перезаписывается при разработке новых запросов.Это мое намерение, так как другой подход, о котором я думал, это сохранить созданные запросы в столбце таблицы и выполнять каждую строку запроса за строкой с помощью курсора.
Как я могу:
a) сохранить встроенные запросы в новой таблице TEMP?
b) выполнить каждый запрос с помощью курсора (или любым другим эффективным способом)?