如果我了解您要查找的内容,则以下内容应该有效。它允许您根据传递给@colName 的内容来确定要返回的字段(连同 USER_ID)。只需将所需的字段名称放在引号中(在变量声明处)。
declare @SQL nvarchar(max),
@colName sysname = ''
set @SQL = 'SELECT USER_ID, @colName
FROM TABLE'
set @SQL = replace(@SQL,'@colName',@colName)
exec(@SQL)
更新:既然我知道您在寻找什么,请尝试以下操作。可能有更好的方法,但这会遍历表上的所有字段(USER_ID 除外)并为每个字段运行一个选择。我应该注意,我不确定这在 PL/SQL 的语法上是否正确(只是注意到这就是你要问的)。
declare @SQL nvarchar(max),
@colName sysname
declare colCursor cursor for
select c.name
from sys.columns c with(nolock)
join sys.tables t with(nolock)
on c.object_id = t.object_id
where t.name = 'TABLE'
except
select 'USER_ID'
open colCursor
fetch next from colCursor into @colName
while @@FETCH_STATUS = 0
begin
set @SQL = 'SELECT USER_ID, @colName
FROM TABLE'
set @SQL = replace(@SQL,'@colName',@colName)
exec(@SQL)
fetch next from colCursor into @colName
end
close colCursor
deallocate colCursor