我正在尝试运行以下查询,以根据其ORDINAL_POSITION动态获取列名。
declare @data_col nvarchar(max),
@id int
set @id=1
print @id
set @data_col='select column_name from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME=''Source_table'' and ORDINAL_POSITION='+@id+''
exec sp_executeSQL @data_col
这似乎不起作用。有没有替代方法??
答案 0 :(得分:1)
您正在使用sp_executesql
。使用参数!
declare @data_col nvarchar(max), @id int;
set @id = 1;
print @id;
set @data_col = '
select column_name
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME = ''Source_table'' and
ORDINAL_POSITION = @id
';
exec sp_executeSQL @data_col, N'@id integer', @id = @id;
我想我也会将表格作为参数传递,但硬编码没有任何害处。
答案 1 :(得分:0)
请改用
DECLARE @data_col NVARCHAR(MAX) ,
@id INT
SET @id = 1
PRINT @id
SET @data_col = 'select column_name from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME=''Source_table'' and ORDINAL_POSITION=@id'
EXEC sp_executesql @data_col,
N'@id int', @id;