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