Хранимая процедура для создания новых запросов и курсор для их выполнения - SQL - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь создать хранимую процедуру, которая принимает значения

  • @ 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) выполнить каждый запрос с помощью курсора (или любым другим эффективным способом)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...