Создайте временную таблицу перед циклом while:
create table #temp2 (Cardname ...)
while @cnt <= @count
insert into #temp2 values(@cardname,@DocDate,@itemcode,@Dscription,@Quantity,@ManBtchNum,@SalPackUn,@ExpDate)
select @cardname = a.CardName,@DocDate=a.DocDate,@itemcode=b.ItemCode,@Dscription=b.Dscription,@Quantity=b.Quantity,@ManBtchNum=c.ManBtchNum,@SalPackUn=c.SalPackUn,@ExpDate=d.ExpDate
Два пункта :
- Не знаете, почему вы используете цикл - попробуйте установить подходы. Вы можете решить большинство проблем в запросах на основе набора
- Вы можете создавать временные таблицы с помощью выбора * в ALTER PROCEDURE spMRI_TAG_try @ Docnum Int AS --Drop таблицы , если она существует IF OBJECT_ID ( N '# temp2' ) IS NOT NULL DROP TABLE # temp2 --create таблицы CREATE TABLE # temp2 ( cardname NVARCHAR ( 100 ), Docdate datetime , itemCode nvarchar ( 50 ), Dscription nvarchar ( 100 ), Количество числовое ( 19 , 6 ), ManBtchNum char ( 1 ), SalPackUn числовое ( 19 , 6 ), ExpDate datetime ) - Сделайте ввод INSERT INTO # temp2 SELECT a . CardName , a . DocDate , b . ItemCode , b . Dscription , b . Количество , c . ManBtchNum , c . SalPackUn , d . ExpDate ОТ OPDN ВНУТРЕННИЙ РЕГИСТРИРУЙТЕСЬ PDN1 Ь О . DocEntry = b . DocEntry INNER JOIN OITM гр ПО с . ItemCode = b . Артикул ВНУТРЕННИЙ РЕГИСТРИРУЙТЕСЬ OBTN д ВКЛ с . ItemCode = d . ItemCode и a . DocNum = @ DocNum и d . ExpDate не является нулевым - выведите SELECT * FROM # temp2 ... Проверьте этот синтаксис в msdn