我试图用由SQL查询检索的行中的另一个SQL查询作为列和表名使用行值在SELECT语句中
例如:
declare @var1 varchar(max)
declare @var2 varchar(max)
declare @result varchar(max)
set @var1 = 'cctl_country'
set @var2 = 'typecode'
set @result = 'select '[email protected]+' from '[email protected]
print @result
在上面的例子中,输出将是select typecode from cctl_country
。 它也应该像select cctl_country,typecode from cctl_country
一样。 table_name应该跟在typecode之后。
但是,扭曲的是,@ VAR1是动态的,并不断变化,这需要从信息架构检索。 因此,对于@ var1值的每个更改,我需要执行select查询并将结果集插入到另一个表中。 我在下面的代码中尝试了同样的事情,但我陷入了困境。有一点帮助,将不胜感激
CREATE PROCEDURE usp_try
AS
BEGIN
DECLARE @StartLoop INT
DECLARE @EndLoop INT
DECLARE @esal INT
DECLARE @sqlquery varchar(max)
DECLARE @Result TABLE (table_name nvarchar(100),typecodes nvarchar(100))
DECLARE @InitResult TABLE (id INT IDENTITY(1, 1),
table_name NVARCHAR(50),
typecode NVARCHAR(50))
INSERT INTO @InitResult
select col.TABLE_NAME,'typecodes' as typecodes from [NFUM_Studio].INFORMATION_SCHEMA.COLUMNS col
inner join [NFUM_Studio].INFORMATION_SCHEMA.TABLES tab
on col.TABLE_NAME = tab.TABLE_NAME
where col.COLUMN_NAME = 'typecode'
SELECT @StartLoop = MIN(ID),
@EndLoop = MAX(ID)
FROM @InitResult
WHILE @StartLoop <= @EndLoop
BEGIN
SET @sqlquery = 'insert into @Result
select table_name,typecode from @InitResult'
SET @StartLoop = @StartLoop + 1
END
SELECT *
FROM @Result
END
的帮助下#Result的输出保持与查询相同。我期待着前进一步。 –
@Kishanu我误解了这个问题。小小的一刻,我会更新我的回答 – Hadi
当然@哈迪..我已经更新了上述问题了一下..请你再看一次吗? –