Я создал эту хранимую процедуру, но получаю так много ошибок, что не могу понять, что не так с моим кодом. Если бы кто-то мог помочь, это было бы здорово.
Направления
Напишите хранимую процедуру, используя транзакционную обработку, которая вставляет новую строку в таблицу Vendor
, а затем добавляет как минимум одну новую Invoice
и InvoiceLineItems
для этой новой Vendor
. Эта программа должна включать возможность обработки неудачной транзакции, в этом случае она должна выдавать сообщение об ошибке и откат.
Мой код:
USE AP
CREATE PROCEDURE Test02_sp
AS
@VendorName VARCHAR(50),
@VendorCity VARCHAR(50),
@VendorState CHAR(2),
@VendorZipCode VARCHAR(20),
@ShipName VARCHAR(MAX),
@ShipRegion VARCHAR(MAX),
@ShipPostalCode VARCHAR(MAX),
@ShipCountry VARCHAR(MAX),
@CustomerID INT,
@CompanyName VARCHAR(MAX),
@Address VARCHAR(MAX),
@City VARCHAR(MAX),
@Region VARCHAR(MAX),
@PostalCode VARCHAR(MAX),
@Country VARCHAR(MAX),
@DefaultTermsID INT = NULL,
@DefaultAccountNo INT = NULL,
BEGIN
ALTER TABLE Vendor
ADD DefaultTermsID INT NULL
CONSTRAINT Vendor_DefaultTermsID DEFAULT 3
ALTER TABLE Vendor
ADD COLUMN VendorID INT PRIMARY KEY IDENTITY(1,1) NOT NULL
GO
ALTER TABLE Vendor
ADD DF_Vendors_AccountNo INT NULL
CONSTRAINT Vendor_DF_Vendors_AccountNo DEFAULT 570
GO
ALTER TABLE Vendor
ADD DefaultTermsID INT NULL
CONSTRAINT Vendor_DefaultTermsID DEFAULT 3
GO
INSERT INTO Vendor
VALUES (@VendorName, @VendorCity, @VendorState, @VendorZipCode, @DefaultTermsID, @DefaultAccountNo)
GO
INSERT INTO Invoices
VALUES (@ShipName, @ShipAddress, @ShipCity, @ShipRegion, @ShipPostalCode, @ShipCountry,
@CustomerID, @CompanyName, @Address, @City, @Region, @PostalCode, @Country)
GO
END