1

Ce code semble fonctionner pour moi, mais ce n'est pas le cas.Insérer à partir de la procédure stockée en complétant mais en n'insérant pas

ALTER PROC dbo.spInsertNewVendor 
AS 
BEGIN 
     BEGIN TRY 
      BEGIN TRAN 
      INSERT INTO Vendors (VendorID, VendorName, Address, City, State, ZipCode, Active) 
      VALUES (1002, 'Appleburg', '1472 Witch Hollow Way', 'Salt Lake City', 'Utah', 84115, 'TRUE') 
      COMMIT TRAN 
     END TRY 
     BEGIN CATCH 
      ROLLBACK TRAN 
     END CATCH 
END 

EXEC dbo.spInsertNewVendor 

J'ai modifié la procédure stockée et tout est bien passé, mais quand j'exécuté la procédure, il n'a pas inséré toutes les lignes comme je le voulais. Y a-t-il quelque chose de différent que je devrais faire? Quelque chose que je manque?

MISE À JOUR:

Vendors 
-VendorID(PK,int) 
-VendorName(nvarchar) 
-Address(nvarchar) 
-City(nvarchar) 
-State(nvarchar) 
-ZipCode(int) 
-Active(nvarchar) 
+0

pouvez-vous s'il vous plaît fournir des détails sur le schéma de la table des fournisseurs? –

+0

Bien sûr. J'ai mis à jour la question – ShreddedSaber

+1

Est-ce que VendorID est configuré pour être auto-incrémenté? Si oui, vous ne pouvez pas définir VendorID dans l'instruction d'insertion, il vous suffit d'insérer des données sans VendorID –

Répondre

0
-- Vendor ID Is a Primary Key And You Cannot Insert Value In PK. 
     ALTER PROC dbo.spInsertNewVendor 
     AS 
     BEGIN 
       BEGIN TRY 
        BEGIN TRAN 
        INSERT INTO Vendors (VendorName, Address, City, State, ZipCode, Active) 
        VALUES ('Appleburg', '1472 Witch Hollow Way', 'Salt Lake City', 'Utah', 84115, 'TRUE') 
        COMMIT TRAN 
       END TRY 
       BEGIN CATCH 
        ROLLBACK TRAN 
       END CATCH 
     END 
     GO 
     EXEC dbo.spInsertNewVendor 
+0

@shredded Quelle est la longueur pour NVARCHAR que vous assignez si elle est 1, il ne permettra pas d'insérer les données. –

0

d'abord trouver l'erreur par ceci:

alter PROC dbo.spInsertNewVendor 
AS 
BEGIN 
     BEGIN TRY 
      BEGIN TRAN 
      INSERT INTO Vendors (VendorID, VendorName, Address, City, State, ZipCode, Active) 
      VALUES (1002, 'Appleburg', '1472 Witch Hollow Way', 'Salt Lake City', 'Utah', 84115, 'TRUE') 
      COMMIT TRAN 
     END TRY 
     BEGIN CATCH 
      ROLLBACK TRAN 
      SELECT ERROR_MESSAGE() AS ErrorMessage; 
     END CATCH 
END 

EXEC dbo.spInsertNewVendor 

Et si vendorID est la colonne d'identité alors au-dessus du code vous donnera en erreur essayer

alter PROC dbo.spInsertNewVendor 
AS 
BEGIN 
     BEGIN TRY 
      BEGIN TRAN 
      INSERT INTO Vendors (VendorName, Address, City, State, ZipCode, Active) 
      VALUES ('Appleburg', '1472 Witch Hollow Way', 'Salt Lake City', 'Utah', 84115, 'TRUE') 
      COMMIT TRAN 
     END TRY 
     BEGIN CATCH 
      ROLLBACK TRAN 
      SELECT ERROR_MESSAGE() AS ErrorMessage; 
     END CATCH 
END 

EXEC dbo.spInsertNewVendor 
0

J'ai répliqué votre requête SQL complète sur ma machine locale et fonctionne correctement, le seul problème que vous pourriez rencontrer après avoir mis à jour votre table est que vous devez avoir assigné votre colonne VendorID comme identité pour l'incrémentation automatique et dans la procédure d'insertion que vous fournissez la valeur de VendorID.

Je vous suggère de nettoyer votre table après, puis essayez d'exécuter à nouveau votre procédure.

Voici ce que j'ai essayé sur mon système local: J'espère que le schéma de ma table Vendors doit être le même que le vôtre.

create table Vendors 
(VendorID int, 
VendorName nvarchar(100), 
Address nvarchar(100), 
City nvarchar(100), 
State nvarchar(100), 
ZipCode int, 
Active nvarchar(100) 
CONSTRAINT PK_Cendor PRIMARY KEY (VendorID)) 

CREATE PROC dbo.spInsertNewVendor 
AS 
BEGIN 
     BEGIN TRY 
      BEGIN TRAN 
      INSERT INTO Vendors (VendorID, VendorName, Address, City, State, ZipCode, Active) 
      VALUES (1002, 'Appleburg', '1472 Witch Hollow Way', 'Salt Lake City', 'Utah', 84115, 'TRUE') 
      COMMIT TRAN 
     END TRY 
     BEGIN CATCH 
      ROLLBACK TRAN 
     END CATCH 
END 

EXEC dbo.spInsertNewVendor 

Sortie: enter image description here