Использование VB. NET и SQL Сервер: у меня есть таблица [Item_List]
. Когда я добавляю новый элемент из формы Windows, я хочу вставить запись в таблицу Item_List
, получить ItemID
, который является IDENTITY
, и использовать его для вставки соответствующей записи в финансовое отслеживание. [Inventory_Transactions]
table.
Я успешно протестировал следующий запрос непосредственно в окне запроса T- SQL:
DECLARE @OutputTbl TABLE (ItemID INT);
INSERT INTO [Item_List] (Item_Name, Vendor, Quantity, Price, Category, Active, Notes, Created)
OUTPUT INSERTED.ItemID INTO @OutputTbl(ItemID)
VALUES ('Test Item', 'Walmart', 42, 4.22, 'Stuff', 1, '', CURRENT_TIMESTAMP);
INSERT INTO Inventory_Transactions (TransDate, Category, Transactee, Amount, Item, Quantity, Description)
SELECT
CURRENT_TIMESTAMP, 'Stuff', 'Walmart', -4.22, ItemID, 42, '';
Однако, когда я пытаюсь запустить, используя ExecuteNonQuery()
, я получаю ошибка
Недопустимое имя столбца 'ItemID'
Я использовал точный сценарий сверху, а также ниже с параметрами - та же ошибка.
Dim sql As String = "DECLARE @OutputTbl TABLE (ItemID INT); " &
"INSERT INTO [Item_List] (Item_Name, Vendor, Quantity, Price, Category, Active, Notes, Created) " &
"OUTPUT INSERTED.ItemID INTO @OutputTbl(ItemID) " &
"VALUES (@ItemName, @Vendor, @Quantity, @Price, @Category, @Active, @Notes, CURRENT_TIMESTAMP); " &
"INSERT INTO Inventory_Transactions (TransDate, Category, Transactee, Amount, Item, Quantity, Description) " &
"SELECT CURRENT_TIMESTAMP, @Category, @Vendor, '-' + @Price, ItemID, @Quantity, @Notes;"
Using conn As New SqlConnection(My.Settings.dbConnectionString)
Dim cmd As New SqlCommand(sql, conn)
If Not IsNothing(params) Then
For Each param In params
cmd.Parameters.Add(param)
Next
End If
If cmd.Connection.State <> ConnectionState.Open Then
cmd.Connection.Open()
Dim rows As Integer = cmd.ExecuteNonQuery()
End Using
Как я могу реализовать это в VB?