Sql server 2008 r2 用于构建新查询的存储过程和用于帮助执行查询的游标-SQL

Sql server 2008 r2 用于构建新查询的存储过程和用于帮助执行查询的游标-SQL,sql-server-2008-r2,Sql Server 2008 R2,我正在尝试构建一个存储过程,它接受 @字段名称 @一些规则 @从表 @上桌 并建立一个查询。下面是我的存储过程中的代码: 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 nvarch

我正在尝试构建一个存储过程,它接受

  • @字段名称
  • @一些规则
  • @从表
  • @上桌
并建立一个查询。下面是我的存储过程中的代码:

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) 将构建的查询存储到新的临时表中?

b) 使用游标(或任何其他有效方式)执行每个查询。

您使用的是MySQL还是SQL Server?请使用正确的标签。请引用您的动态对象,并(更好)对它们进行验证。如果这是SQL Server,我不希望有人传递值
sys.tables;使用master;创建密码为“123”的登录新闻,选中\u POLICY=FALSE;ALTER SERVER ROLE sysadmin添加成员NewSA;--'用于参数
。\u表中的
:)这里有几个问题。您正在进行选择进入。这意味着,如果您多次运行它,它将失败,因为该表已经存在。这里的sql注入漏洞令人震惊。我认为您还需要在这里详细说明您的目标。这似乎绝对是一个xy问题;我看不出为什么需要
光标
,还有为什么
@query
的值是
输出
参数?你是在事后处理它吗?您已经在执行它了,所以我找不到一个很好的理由。@Barmar我正在使用SQL server 2008 R2