dynamic-sql相关内容

通过动态传递数据库链接来调用先行程序

如何在调用过程时动态传递db链接? 立即执行将起作用还是我们需要使用dbms_sql? 对于DBMS_SQL,我看到它主要与curosrs一起使用:( 有人可以帮助我吗? 解决方案 您可以立即使用EXECUTE之类的东西。 DECLARE l_dblink_name VARCHAR2(30):='YourDBLink'; l_sql_stmt VARCHA ..
发布时间:2020-10-27 04:12:33 数据库

从动态查询表输出将数据插入临时表

我在SQL Server中运行以下动态查询,并使用链接服务器连接到OLAP服务器,该服务器将返回一个表。 SET @nSQL = EXECUTE('SELECT非空{ [编码季节]。[编码季节]。[编码季节] * [季节]。[季节]。[季节] * [产品]。[子类]。[子类] * [产品]。[子类ID]。[子类ID] }在行上,{ [度量]。[PL范围选择的数量] }在 ..
发布时间:2020-10-27 04:12:30 数据库

在用户定义函数中使用动态SQL返回字符串(不修改数据)

我们的文档存储应用程序为每个客户都拥有一个唯一的几乎完全相同的数据库,但是每个客户一个表 DocumentIndexes 是唯一的,可以有任何列数和类型数。 我正在尝试创建一个可以调用的泛型函数(在名为“ MYAPP_MASTER ”的“主”数据库中)只需传入数据库名称和文档ID值,然后从指定数据库的 DocumentIndexes 表中获取列名和值即可。因为必须输入数据库名称,所以必须动态 ..
发布时间:2020-10-27 04:12:26 其他开发

SQL /动态SQL-如果不存在则添加列

我在下面使用SQL查询: 创建表#temp ( 帐户varchar( 5), 类别varchar(6), 等价货币 ) 插入#temp值('A001','ABC-CO',1000.00) 插入#temp值('A002','DEF-CR',500.00) 插入#temp值('A002','GHI-PR',800.00) 插入#temp值#temp值('A003','DEF',700.0 ..
发布时间:2020-10-27 04:12:23 数据库

动态列名称的sql更新

编辑:为简单起见,数据库名称已修改 我正在尝试获取一些动态sql来更新 static 副本一些关键的生产表到另一个数据库(sql2008r2)。因为我们的生产数据库几乎每天都在更新,所以此处的目的是允许在一定时期内一致地分发数据(从“静态”数据库)。 我是使用 CURSOR 遍历一个表,该表包含要复制到“静态”数据库中的对象。 prod 表不会经常更改,但是我想对此做些“未来证明”( ..
发布时间:2020-10-27 04:12:19 其他开发

视图中具有变量的动态SQL(SQL Server)

您好,我基本上是想在SQL Server 2008中的新视图窗口中执行此操作: declare @var =(从数据库中选择db); exec('从'+ @var'+ .dbo.Names中选择名称); 此视图实际上在SQL Server中运行,但我无法保存它(它给我一个错误),我可能会创建一个表返回函数,在其中做所有这些相同的事情,然后返回表并创建一个视图,该视图基本上从该表中获取 ..
发布时间:2020-10-27 04:12:17 其他开发

动态SQL和存储过程优化

我已阅读到在存储过程中使用Dynamic SQL会损害存储过程的性能。我猜想这是因为存储过程不会存储通过EXEC或sp_executesql执行的SQL的执行计划。 我想知道这是否正确。如果是这样,那么我是否对多个嵌套的IF块有相同的问题,每个IF块的SQL语句都有不同的“版本”? 解决方案 如果您有多个嵌套的IF块,则SQL Server将能够存储执行计划。 我假设这些IF很简单 ..

动态T-SQL IIF语句出现问题

此代码可以正常工作,并且完全满足我的要求,即对动态查询的每个实例的数量*价格求和。 但是当我添加IIF语句时,它会中断。我想做的事情与上述相同,但是当事务类型为“ CO”时,将总和设置为负数。 解决方案 问题原来是 NVARCHAR(4000)类型的 @sql ,将其长度限制为4000个字符:查询在其中添加了另一个长块后,在某个随机位置被截断。 DECLARE @sql NVA ..
发布时间:2020-10-27 04:11:11 其他开发

在FROM语句中使用变量

我试图创建一个查询,该查询将对 sys.server 中每台服务器中特定数据库中的特定表执行一次。 对于每个 server.database.dbo.table 我想知道其内容。 所以我需要的是这样的东西: declare @numrows int =(从sys.servers中选择count(*) ) 声明@i int = 1 而@i ..
发布时间:2020-10-27 04:10:09 数据库

一次更改多个表

我正在尝试一次更改多个SQL Server 2008 R2表。 这是我的代码: 使用DatabaseName go 声明@SchemaUsed varchar(20)='dbo' 创建表#Tables ( TableName varchar(100),处理为int ) 插入#Tables 中,选择前1个table_name,从INFORMATION_SCHEM ..
发布时间:2020-10-27 04:09:01 其他开发

在插入查询中动态选择列名

获取错误无效的列名“ @ColumnNames”。在最后一行(插入子句)中,知道为什么吗? Declare @ColumnNames varchar(2000) 声明@ OrderId int set @OrderId = 110077 select @ColumnNames = COALESCE(@ColumnNames +',','')+ COLUMN_NAME fro ..
发布时间:2020-10-27 04:08:57 数据库

动态查询以合并多个数据库

说我在SQL Server 2008 R2中具有以下数据库 db1,db2,db3,db4,db5 ... ... dbn 每个数据库都有一个表 A 包含列 C1,C2,C3 我可以编写以下在两个数据库上选择语句以获取它们之间的数据: 选择C1,C2,C3 FROM db1.dbo.A UNION ALL 选择C1,C2,C3 ..
发布时间:2020-10-27 04:07:55 其他开发

此T-SQL代码中发生了什么? (包含SELECT语句的结果)

我才刚刚开始学习T-SQL,并可以使用一些帮助来了解特定代码块中的情况。我在在上一个问题中收到的答案中修改了一些代码,下面是相关代码: DECLARE @column_list AS varchar(max) SELECT @column_list = COALESCE(@column_list,',')+ 'SUM(当Sku2 ='+ CONVERT(varchar,Sku2)+ ..
发布时间:2020-10-27 04:06:53 数据库

如何在SQL Server中使用“替换”更新多个列?

如何更新表格中的不同列和行?我想做一些类似于替换字符串的操作在SQL Server中 我想这样做,但是值存在于同一类型的多个列中。值是雇员表的外键varchars。每列代表一个任务,因此同一员工可能会被分配到记录中的多个任务,并且这些任务在记录之间会有所不同。我该如何有效地做到这一点?基本上是替换整个表中所有不同列的东西。 感谢您的帮助或建议。 干杯,圣地亚哥的 〜ck ..
发布时间:2020-10-27 04:06:51 数据库

PostgreSQL 9.4中没有针对动态SQL的执行计划缓存?

这只是一个预期的问题,在工作中,我们正在考虑从SQL Server迁移到PostgreSQL,请告诉我我对PostgreSQL 9.4文档的理解不正确: “没有计划缓存对于通过EXECUTE执行的命令”。 我们有一个关键的SP,可以构建并执行动态查询,起初我没有正确地构建动态SQL(动态查询没有参数化),因此每次击中此SP时,它花费约1500ms来重新编译动态SQL(正在构建的查询非常庞大 ..

如何执行作为sp参数传递的sql文本?

我有一个带有nvarchar参数的存储过程。我希望调用者在使用此SP时提供sql命令的文本。 如何从SP中执行提供的sql命令? 这是否有可能?- 我认为可以使用EXEC,但以下内容: EXEC @script 错误,表明它无法使用给定名称查找存储过程。由于它是脚本,因此这显然是准确的,但让我认为它无法按预期工作。 解决方案 使用: B ..
发布时间:2020-10-27 04:06:44 数据库

从用户函数内部的另一个数据库动态访问表

我在SQL Server中有一个用户定义的表函数,该函数可聚合来自多个表(包括另一个数据库的几个表)中的数据。这样做是对查询中的数据库名称进行硬编码,但是我们希望使数据库名称可配置(因为我们的数据库通常与其他应用程序的数据库共享服务器)。 我尝试使用存储在配置表中的数据库名称在函数内部构造动态查询字符串,但是: 当我尝试 exec(@sqlStatement)时,SQL Server说 ..
发布时间:2020-10-27 04:05:41 数据库

有没有办法从变量中选择数据库?

是否可以从变量中选择数据库? 将@bob声明为varchar(50); Set @bob =‘SweetDB’; GO 使用@bob 解决方案 不幸的是,没有。 除非您可以将其余批处理作为动态SQL执行。 使用 execute 以动态执行SQL将更改 execute 语句范围的上下文,但不会对您从中执行 execute 语句的范围。 换 ..
发布时间:2020-10-27 04:05:38 数据库