问题标签 [dynamic-sql]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
217 浏览

sql - 用 sql 构造动态 In 语句

假设我们需要检查三个布尔条件来执行选择查询。让三个标志为“A”、“B”和“C”。

如果所有三个标志都设置为“1”,那么要生成的查询是 SELECT * FROM Food WHERE Name In ('Apple, 'Biscuit', 'Chocolate'); 如果只有标志“A”和“B”设置为“1”,而 C 设置为“0”。然后生成以下查询。

最好的方法是什么?

0 投票
1 回答
1365 浏览

sql-server - 在用户函数中动态访问另一个数据库中的表

我在 SQL Server 中有一个用户定义的表函数,它聚合来自多个表的数据,包括另一个数据库的几个表。这是在查询中硬编码数据库名称完成的,但我们希望使数据库名称可配置(因为我们的数据库通常与其他应用程序的数据库共享服务器)。

我尝试使用存储在配置表中的数据库名称在函数内部构造一个动态查询字符串,但是:

  1. 当我尝试exec(@sqlStatement)SQL Server 时说函数内部不允许执行字符串。
  2. 然后我尝试exec sp_executesql @sqlStatement并创建了函数,但是当你执行它时,SQL Server 说在函数内部你只能运行扩展函数和过程。

所以问题是:是否可以创建访问另一个数据库中的表的函数或存储过程,而无需在数据库名称不同时重新创建函数?

TIA。

0 投票
2 回答
20864 浏览

sql - 如何将变量中的动态sql语句与普通语句连接起来

我有一个非常复杂的查询,它将通过动态构建并保存在一个变量中。

作为第二部分,我有另一个普通查询,我想在这两者之间进行内部连接。

为了使它更容易这里是一个小例子来说明我的问题。
对于这个小例子,我使用了AdventureWorks 数据库

一些查询是动态建立的

(是的,我知道这里没有动态,因为这只是一个例子。)

我的正常查询

也许我想拥有但不起作用

0 投票
4 回答
3416 浏览

debugging - Debugging dynamic sql + dynamic tables in MS SQL Server 2008

I have a messy stored procedure which uses dynamic sql.

I can debug it in runtime by adding print @sql; where @sql; is the string containing the dynamic SQL, right before I call execute (@sql);.

Now, the multi-page stored procedure also creates dynamic tables and uses them in a query. I want to print those tables to the console right before I do an execute, so that I know exactly what the query is trying to do.

However, the SQL Server 08 does not like that. When I try:

print #temp_table; and try to compile the S.P. I get this error:


The name "#temp_table" is not permitted in this context. Valid expressions are constants, constant expressions, and (in some contexts) variables. Column names are not permitted.


Please help.

EDIT:

I am a noob when it comes to SQL. However, the following statement: select * from #tbl; does not print anything to the console when it is run non-interactively; the print statement works though.

The following statement has incorrect syntax: print select * from #tbl;. Is there a way for me to redirect the output of select to a file, if stdout is not an option?

Thanks.

0 投票
4 回答
62807 浏览

sql - 动态 SQL 生成列名?

我有一个查询,我正在尝试将行值转换为列名,目前我正在使用SUM(Case...) As 'ColumnName'语句,如下所示:

上面的查询效果很好,给了我我需要的东西。但是,我SUM(Case...根据以下查询的结果手动写出语句:

有没有办法在存储过程中使用 T-SQL,我可以SUM(Case...Select Distinct Sku2 From OrderDetailDeliveryReview查询中动态生成语句,然后执行生成的 SQL 代码?

0 投票
2 回答
452 浏览

sql - 这个 T-SQL 代码发生了什么?(连接 SELECT 语句的结果)

我刚刚开始学习 T-SQL,并且可以使用一些帮助来理解特定代码块中发生的事情。我在上一个问题中收到的答案中修改了一些代码,这是有问题的代码:

T-SQL 代码完全符合我的要求,即根据查询结果生成单个结果,然后在另一个查询中使用该结果。

但是,我无法弄清楚该语句如何通过在SELECT @column_list =...语句中将多个值放入单个字符串中SELECT。如果没有分配 to @column_list,该SELECT语句将简单地返回多行。如何通过在SELECT语句中使用变量将结果“扁平化”为一个值?我应该如何阅读此 T-SQL 以正确理解发生了什么?

0 投票
4 回答
14667 浏览

oracle - 从 Oracle 中的动态 SQL 获取结果集中的结果

这个问题与我在 StackOverflow 上发现的其他几个问题相似,但差异对我来说足以证明一个新问题,所以这里是:

我想从Oracle中的动态SQL获取结果集,然后在类似SqlDeveloper的工具中显示为结果集,就好像我直接执行了动态SQL语句一样。这在 SQL Server 中很简单,所以具体来说,这是一个来自 SQL Server 的示例,它在 SQL Server Management Studio 或查询资源管理器中返回结果集:

或者更准确地说:

问题“如何从执行动态 SQL 的 Oracle PL/SQL 匿名块返回结果集/游标?” 解决了问题的前半部分——在游标中执行动态 SQL。“如何使 Oracle 过程返回结果集”问题提供了类似的答案。网络搜索揭示了同一主题的许多变体,所有这些都只解决了我问题的前半部分。我找到了这篇文章解释如何在 SqlDeveloper 中执行此操作,但这使用了 SqlDeveloper 的一些功能。我实际上正在使用自定义查询工具,因此我需要在 SQL 代码中独立包含该解决方案。此自定义查询工具同样无法显示打印 (dbms_output.put_line) 语句的输出;它只显示结果集。这是使用“立即执行...批量收集”的另一种可能途径,但此示例再次使用 dbms_output.put_line 语句循环呈现结果。此链接试图解决该主题,但该问题也从未在那里得到完全回答。

假设这是可能的,我将再添加一个条件:我想这样做而不必定义函数或过程(由于数据库权限有限)。也就是说,我想执行一个包含动态 SQL 的自包含 PL/SQL 块,并在 SqlDeveloper 或类似工具中返回一个结果集。


所以总结一下:

  • 我想执行任意 SQL 语句(因此是动态 SQL)。
  • 该平台是甲骨文。
  • 解决方案必须是没有过程或函数的 PL/SQL 块。
  • 输出必须作为规范的结果集生成;没有打印语句。
  • 输出必须在 SqlDeveloper 中呈现为结果集,而不使用任何 SqlDeveloper 特殊功能。

有什么建议么?

0 投票
2 回答
527 浏览

sql-server - 用于查询 Adventureworks 表的动态 SQL

我正在尝试从 Sql Server 2008 中的“Person”架构中查看 Adventureworks DB 中的表列表。我开发了以下 SP,但是在按如下方式运行它之后,它给了我错误“')' 附近的语法不正确”。你知道我如何修改这个 SP 或 exec 语句吗?

0 投票
2 回答
12502 浏览

xml - 在xml中插入属性时获取'xml数据类型方法“修改”的参数1必须是字符串文字'

尝试以下代码。但是得到'xml数据类型方法“修改”的参数1必须是字符串文字'错误。搜索了很多,但找不到任何解决这个问题的方法

0 投票
5 回答
35423 浏览

.net - .Net 是否有动态 Sql 构建器库?

像这样的东西。

http://code.google.com/p/squiggle-sql/wiki/Tutorial

对于需要从 UI 的用户输入构建复杂 sql 的情况,这是必需的。目前在我正在工作的项目中使用的是字符串操作,它看起来很难看且难以维护。