gpt4 book ai didi

sql - 在这种情况下如何使用 EXEC 或 sp_executeSQL 而不循环?

转载 作者:行者123 更新时间:2023-12-01 05:39:23 29 4
gpt4 key购买 nike

Environment: SQL Server 2005/2008, pubs database



我使用 information_schema 表将一组数据插入到表变量中,如下所示。

Sample Data

现在我想根据在列 dSQL 中执行查询的结果更新标志列。我能够使用循环/光标进行更新,然后使用 sp_executeSQL
更新列,然后更新标志列。但是有没有一种替代的基于集合的方法来做到这一点而不循环遍历所有单独的行?

use pubs
go

declare @dsql Nvarchar(max)='', @tablename varchar(100), @colname varchar(100)
declare @t table (
TABLE_NAME varchar(100),
COLUMN_NAME varchar(100)
)

insert into @t
select distinct t.TABLE_NAME, c.COLUMN_NAME
from information_Schema.tables t
inner join
information_Schema.columns c
on t.TABLE_CATALOG = c.TABLE_CATALOG
where t.TABLE_SCHEMA = c.TABLE_SCHEMA
and t.TABLE_TYPE = 'BASE TABLE'
and c.DATA_TYPE = 'varchar'

select *, Dsql = 'select ' + COLUMN_NAME + ' from ' + TABLE_NAME + ' WHERE '
+ COLUMN_NAME + ' = ''Menlo Park''', '' as Flag
FROM @t
GO

我有一个想法,创建一个函数并为每一行调用该函数来执行单独的查询语句,但为每条记录调用该函数可能会影响性能。

最佳答案

正如您所建议的那样,它是一个循环或一个函数(无论如何这实际上是一个循环)。

关于sql - 在这种情况下如何使用 EXEC 或 sp_executeSQL 而不循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6592829/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com