Sybase 运行从先前查询生成的 SQL

Posted

技术标签:

【中文标题】Sybase 运行从先前查询生成的 SQL【英文标题】:Sybase Run SQL Generated From Previous Query 【发布时间】:2012-09-03 08:39:35 【问题描述】:

我正在使用 Sybase 生成 SQL 推荐,以根据以前的内容将一些新行插入到表中(使用旧的 ORM),我想知道是否有一种方法可以在不复制和粘贴的情况下执行生成的 SQL?

我正在使用类似的东西

SELECT 'INSERT INTO Mapper VALUES (''' + ClassName + ''', ''NewObject'', ''NewId'', '''+convert(varchar(10), max(Sequence)+1)+''')'
FROM Mapper WHERE ClassName IN ('James', 'Steve') GROUP BY ClassName 

对于像这样的表

ClassName | ObjectName | ID | Sequence

这会输出如下结果:

 INSERT INTO Mapper VALUES ('James', 'NewObject', 'NewId', '38')           
 INSERT INTO Mapper VALUES ('Steve', 'NewObject', 'NewId', '24') 

现在是否可以运行此生成的 SQL,而无需在 Sybase 中仅使用 SQL 进行复制和粘贴(使用 Aqua Data Studio)?

目前我只是将其复制并粘贴回同一个窗口

谢谢,

--

请注意,如果这有什么不同,那将是 2000 多行

附:我刚刚注意到我经常使用这个词,对不起^_^

【问题讨论】:

【参考方案1】:

您可以在语句中使用CURSOR,并使用EXEC 命令执行每行生成的SQL。

我假设这是一个一次性的任务,而不是一个持续的过程,你不使用INSERT table SELECT....是有原因的

【讨论】:

是的,你说得对,这是一项一次性的批量任务,虽然我忘记了 INSERT SELECT,但我还是会尝试使用 CURSOR,因为我之前没有使用过它

以上是关于Sybase 运行从先前查询生成的 SQL的主要内容,如果未能解决你的问题,请参考以下文章

Sybase 上的慢速 SQL 查询

sybase数据库 如何使用sql语句查询,数据库容量大小和数据库使用量大小

性能问题案例02——sybase连接堵塞问题

通过批处理在 Sybase 中运行大量 SQL 脚本

sybase 如何像SQL SERVER一样建立作业,让他能定时运行存储过程

SQL Server 2008,Sybase - 低带宽上的大型选择查询