【问题标题】:Pass Select command as parameter and execute in temp table将 Select 命令作为参数传递并在临时表中执行
【发布时间】:2013-02-08 08:04:56
【问题描述】:

我想在 SQL Server 2008 中将 SELECT 查询作为参数传递给 STORED PROCEDURE
在该 sp 中执行该查询并存储到临时表,然后我想在该临时表的 2 字段上循环游标。

那我该怎么做呢?

主要是这部分:execute that query and store to temp table

编辑:

查询:

SELECT * FROM SomeView WHERE COL1 = '1' AND COL = GETDATE() ORDER BY COL0

SomeView 中有很多字段,但我只想要 2 个:COLS1、CLOS2 我只想在这 2 个字段上循环 CURSOR

【问题讨论】:

  • 请阅读The Curse and Blessings of Dynamic SQL,它将回答您关于动态sql的所有问题。而且我认为您需要一个全局临时表 (##)
  • ok...........你的查询和存储过程在哪里?

标签: asp.net .net sql sql-server-2008


【解决方案1】:

以下是将动态 SQL 查询的查询结果存储到临时表的方法:

DECLARE @sql NVARCHAR(1000)
SET @sql = 'SELECT COL1, COL2 FROM SomeView WHERE COL1 = ''1'' AND COL = GETDATE() ORDER BY COL0'

CREATE TABLE #temp(col1 <yourDataType>, col2 <yourDataType>)
INSERT INTO #temp EXEC sp_executesql @sql

但是您确实应该考虑替代游标,游标会降低性能,游标逐行操作,而查询则执行基于集合的操作。 SQL Server 针对基于集合的数据访问进行了优化。如果您可以编写查询,请不要使用游标。

【讨论】:

  • 非常感谢...但我必须先检查每一行,然后更新该行... COL1 和 COL2 只是 ids... 建议表示赞赏..
  • 好消息:我已经在临时表的帮助下删除了光标...谢谢
  • @Sac 太好了,不客气,我觉得光标并不是那么需要:)
猜你喜欢
  • 2019-03-28
  • 2013-07-15
  • 2012-09-12
  • 1970-01-01
  • 2015-04-11
  • 2016-02-07
  • 2016-10-10
  • 1970-01-01
  • 2023-02-10
相关资源
最近更新 更多