Sql 执行后将存储过程重命名为多列
执行我的存储过程后,将返回以下列:Sql 执行后将存储过程重命名为多列,sql,sql-server,tsql,Sql,Sql Server,Tsql,执行我的存储过程后,将返回以下列: 斯诺 名字 日子 数量 bkt1 bkt2 但我想将这些列名更改为: 斯诺 名字 日子 数量 col_name_用户的i/p_ col_name_用户的i/p_ 您能提供帮助吗?在动态sql中使用列别名,如下所示: declare @q nvarchar(max) set @q ='select bkt1 as ' + @ipfromuser +' from table1' exec(@q) 因为您没有提到版本,所以我假设您有SQL Server
- 斯诺
- 名字
- 日子
- 数量
- bkt1
- bkt2
- 斯诺
- 名字
- 日子
- 数量
- col_name_用户的i/p_
- col_name_用户的i/p_
您能提供帮助吗?在动态sql中使用列别名,如下所示:
declare @q nvarchar(max)
set @q ='select bkt1 as ' + @ipfromuser +' from table1'
exec(@q)
因为您没有提到版本,所以我假设您有SQL Server 2012+版本。您可以使用属性更改输出列名 示例:
CREATE PROCEDURE SP_Test
AS
BEGIN
SELECT 1 AS 'ColA', 2 AS 'ColB'
END
现在,您可以使用带有结果集的属性来更改列名
EXEC SP_Test
EXEC SP_Test WITH RESULT SETS(
(New_Col1 INT,
NEW_Col2 INT))
如果您使用的是较旧版本的SQL Server,则可以将存储过程结果集转储到临时表或表变量中,然后可以使用别名(与上述示例相同)
为执行sp后从用户处提供的sp和column名称查找解决方案更改列名,而不是在执行sp后更改列名在存储过程内的select查询中使用别名,如我的回答中所述,但我的列名是从用户处提供的,因此当写入为@ipfromuser时,请给出错误使用动态sql,然后如回答中所示明白你到底需要什么吗?显示您的sp结果以及您的预期结果!
DECLARE @Mytest TABLE (New_Col1 INT, New_Col2 INT)
INSERT INTO @Mytest EXEC Sp_Test
SELECT * FROM @Mytest