хранимая процедура sql

#sql #vb.net

Вопрос:

 create PROC insert_Items(@Store varchar(20),@ID varchar(20),@Name varchar(20),@IDate varchar(11))
As
Declare @UDates varchar(11),
Declare @Quantity int,
Declare @Defects int
Select  @Quantity  From inserted 
Select  @Defects  From Inserted
set @UDates = getdate(), 
     @Remanders = @Defects - @Quantity
Insert Items(StoreName,ProductID,ProductName,Quantity,Defects,InsertedDate,UpdatedDate)
Values(@Store,@ID,@Name,@Quantity,@Defects,@IDate,@UDates)
 

Вопрос в том, что я хочу получить значение для остатка в моей таблице l

Комментарии:

1. Я действительно вижу Следственный изолятор вместо Остатка, я полагаю, вы это имеете в виду?

Ответ №1:

Если ваша таблица уже содержит поле остатка, просто добавьте его в инструкцию INSERT следующим образом :

     Insert Items(StoreName, ProductID, ProductName, Quantity, Defects, InsertedDate, UpdatedDate, Remainder) 
Values(@Store, @ID, @Name, @Quantity, @Defects, @IDate, @UDates, @Remainder)
 

Лучшим вариантом может быть сделать столбец остатка в таблице вычисляемым столбцом. Таким образом, вы всегда будете иметь значение, даже если данные не были добавлены с помощью вашей хранимой процедуры.

Комментарии:

1. Не уверен, что я понимаю, что вы имеете в виду. Ты хочешь сказать, что не можешь поменять столик? Если вам нужно, чтобы @Remanders возвращался из вашей хранимой процедуры, вы можете использовать пример выходного параметра Ральфа или просто, но строку «RETURN @Remanders» в конце хранимой процедуры

2. я расставляю точки на входе через vb.net так что это не может быть вводом.именно таким я хочу, чтобы был конечный результат ….. @Остаток = @Количество — @Дефекты

3. как мне пройти по этому вычисляемому столбцу

4. «ИЗМЕНИТЬ элементы ТАБЛИЦЫ, ДОБАВИТЬ остаток В КАЧЕСТВЕ количества — Дефекты»

Ответ №2:

общая практика заключается в объявлении выходного параметра для процедуры. Затем вызывающий абонент получит это значение в качестве параметра.
например

 create proc outputdemo(@invalue int, @outvalue int output)
as
    set @outvalue = @invalue * 2
go

declare @myvalue int
exec outputdemo 10, @myvalue output
select @myvalue