gpt4 book ai didi

sql-server-2008 - SQL Server : Insert stored procedure results into table based on parameters

转载 作者:行者123 更新时间:2023-12-02 09:44:15 26 4
gpt4 key购买 nike

我有一个存储过程Test_Sp,它以这种方式返回数据:

 Id  Name     Age   Address  State  Country
1 ManiS 25 aaaa bbb ccc

此存储过程返回 6 列数据,但我只想将前 2 列插入临时表中。

我的临时表变量是:

Declare @testTbl Table (RowId int identity, Name nvarchar(100), Age int);
INSERT INTO @testTbl(Name,Age) EXEC [Test_Sp] 23;
Select * from @testTbl;

但我收到此错误:

Msg 50000, Level 16, State 0, Procedure Test_Sp, Line 16
Cannot use the ROLLBACK statement within an INSERT-EXEC statement.

我知道Select * into并且如果我创建一个与存储过程输出具有相同列的临时表意味着它可以工作..

我的问题:是否可以根据参数从存储过程输出中仅将两列插入到临时表变量中?

最佳答案

选项 1:

使用 sp 返回的所有列创建一个中间临时表,然后执行以下操作:

INSERT INTO Temp
Exec [Test_Sp] 23;

然后

INSERT INTO @testTbl(Name,Age)
select name,age from temp

选项 2:

修改您的存储过程并添加一位数据类型参数@limitedcolumn如果 @limitedcolumn=true 则仅返回必需的列,否则返回所有列

INSERT INTO @testTbl(Name,Age) EXEC [Test_Sp] 23,true;

关于sql-server-2008 - SQL Server : Insert stored procedure results into table based on parameters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12621469/

26 4 0