SQL Serverのオペレーション・ストレージ・プロシージャで返されるテーブルの結果セット
まずコード全体を出して、次に説明します.
ステップ1:テンポラリ・テーブルの作成
テーブルの構造は、ストレージ・プロシージャが返す結果セットと同じであり、タイプなども同じであることが望ましい.
ステップ2:結果セットをテンポラリ・テーブルにコピーする
ここで、私は穴を踏んだ.最初はFmodelのタイプをvarchar(100)に設定しましたが、結果は間違っていました:String or binary data would be truncated.
解決策はalter table#temTable alter column Fmodel varchar(1000)not null
わからないなら読んでくださいhttps://blog.csdn.net/Alone_in_/article/details/102933521
ステップ4:テンポラリ・テーブルの操作
ここにまた穴が落ちた.https://blog.csdn.net/Alone_in_/article/details/102933739
ステップ5:テンポラリ・テーブルを削除します!
いつまでも捨てるのは私の本意ではありません.空間を節約するためですか.
補足:
私は別の場所で再びこの方法を使って、新聞が間違っていることに気づいた!
メッセージ8164、レベル16、ステータス1、プロセスMaterialSplit、65行目An INSERT EXEC statement cannot be nested.
ストレージ・プロシージャで返される結果セットもinsert execの別のストレージ・プロシージャによって生成されるため、sqlserverではネストは許可されません.
ソリューション:
https://blog.csdn.net/ocean42234111/article/details/52301298
create table #temTable(
FSerialNum int,
billNo varchar(200),
Flevel varchar(200),
beginDate datetime,
FNumber varchar(500),
FName varchar(500),
FModel varchar(1000),
FAttribute varchar(200),
FUnit varchar(200),
FDosage decimal(28,10),
FLoss decimal(28,10),
FNetWeight decimal(28,10)
)
insert into #temTable exec proc_gd_expandmultiorderbomBYSO 'HS19-2222'
select FSerialNum,billNo,Flevel,beginDate,FNumber,FName,FModel,FAttribute,FUnit,SUM(FDosage)as FDosage,FLoss,FNetWeight
from #temTable where customStatus=990240
group by FNumber,FSerialNum,billNo,Flevel,beginDate,FName,FModel,FAttribute,FUnit,FLoss,FNetWeight
drop table #temTable
ステップ1:テンポラリ・テーブルの作成
テーブルの構造は、ストレージ・プロシージャが返す結果セットと同じであり、タイプなども同じであることが望ましい.
create table #temTable(
FSerialNum int,
billNo varchar(200),
Flevel varchar(200),
beginDate datetime,
FNumber varchar(500),
FName varchar(500),
FModel varchar(1000),
FAttribute varchar(200),
FUnit varchar(200),
FDosage decimal(28,10),
FLoss decimal(28,10),
FNetWeight decimal(28,10)
)
ステップ2:結果セットをテンポラリ・テーブルにコピーする
insert into #temTable exec proc_gd_expandmultiorderbomBYSO 'HS19-2222'
ここで、私は穴を踏んだ.最初はFmodelのタイプをvarchar(100)に設定しましたが、結果は間違っていました:String or binary data would be truncated.
解決策はalter table#temTable alter column Fmodel varchar(1000)not null
わからないなら読んでくださいhttps://blog.csdn.net/Alone_in_/article/details/102933521
ステップ4:テンポラリ・テーブルの操作
select FSerialNum,billNo,Flevel,beginDate,FNumber,FName,
FModel,FAttribute,FUnit,SUM(FDosage)as FDosage,FLoss,FNetWeight
from #temTable
where customStatus=990240
group by FNumber,FSerialNum,billNo,Flevel,beginDate,FName,FModel,FAttribute,FUnit,FLoss,FNetWeight
ここにまた穴が落ちた.https://blog.csdn.net/Alone_in_/article/details/102933739
ステップ5:テンポラリ・テーブルを削除します!
drop table #temTable
いつまでも捨てるのは私の本意ではありません.空間を節約するためですか.
補足:
私は別の場所で再びこの方法を使って、新聞が間違っていることに気づいた!
メッセージ8164、レベル16、ステータス1、プロセスMaterialSplit、65行目An INSERT EXEC statement cannot be nested.
ストレージ・プロシージャで返される結果セットもinsert execの別のストレージ・プロシージャによって生成されるため、sqlserverではネストは許可されません.
ソリューション:
https://blog.csdn.net/ocean42234111/article/details/52301298