Question: Please help! How do I fix my stored procedure to populate multiple tables in SQL Server? I keep getting this error: Msg 8114, Level 16,

Please help! How do I fix my stored procedure to populate multiple tables in SQL Server? I keep getting this error: Msg 8114, Level 16, State 5, Procedure ListOfTournaments, Line 0 [Batch Start Line 433]

Error converting data type varchar to int.

*NOTE: I must use SEQUENCEs that I created to populate the Primary Keys in the table. Not sure if I'm using right syntx.

CREATE TABLE ProfessionalAssociation (

LeagueId INT NOT NULL PRIMARY KEY,

LeagueName VARCHAR(255) NOT NULL);

CREATE TABLE ATP (

LeagueID INT NOT NULL

CONSTRAINT FK_ATP FOREIGN KEY (LeagueID) REFERENCES ProfessionalAssociation);

CREATE TABLE WTA (

LeagueID INT NOT NULL

CONSTRAINT FK_WTA FOREIGN KEY (LeagueID) REFERENCES ProfessionalAssociation);

CREATE TABLE Country (

CountryCode CHAR(3) NOT NULL PRIMARY KEY,

CountryName VARCHAR(100) NOT NULL);

CREATE TABLE Location (

LocationID INT NOT NULL PRIMARY KEY,

City VARCHAR(64) NOT NULL,

State VARCHAR(10) NOT NULL,

Country VARCHAR(3) NOT NULL);

CREATE TABLE TournamentType (

TournamentTypeID INT NOT NULL PRIMARY KEY,

TournamentType VARCHAR(64) NOT NULL);

CREATE TABLE GrandSlam (

TournamentTypeID INT NOT NULL PRIMARY KEY,

TournamentPoints INT NOT NULL,

CONSTRAINT FK_TournamentTypeID_GrandSlam FOREIGN KEY (TournamentTypeID) REFERENCES TournamentType);

CREATE TABLE Tournament (

TournamentID INT NOT NULL PRIMARY KEY,

LocationID INT NOT NULL,

TournamentTypeID INT NOT NULL,

TournamentName VARCHAR(100),

StartDate DATE NOT NULL,

EndDate DATE NOT NULL,

Surface VARCHAR(20) NOT NULL,

NumberOfRounds INT NOT NULL,

CONSTRAINT FK_LocationID_Tournament FOREIGN KEY(LocationID) REFERENCES Location,

CONSTRAINT FK_TournamentTypeID FOREIGN KEY (TournamentTypeID) REFERENCES TournamentType);

CREATE SEQUENCE ProfessionalAssociation_seq START WITH 1;

CREATE SEQUENCE WTA_seq START WITH 1;

CREATE SEQUENCE ATP_seq START WITH 1;

CREATE SEQUENCE Country_seq START WITH 1;

CREATE SEQUENCE Location_seq START WITH 1;

CREATE SEQUENCE Tournament_seq START WITH 1;

CREATE SEQUENCE Tournament_Type_seq START WITH 1;

WHAT I HAVE SO FAR:

CREATE OR ALTER PROCEDURE ListOfTournaments

DECLARE @LeagueID INT, @LeagueName VARCHAR(255),@LocationID INT, @City VARCHAR(64), @State VARCHAR(10), @Country CHAR(3),

@TounamentTypeID INT, @TournamentPoints INT, @TournamentType VARCHAR(64), @TournamentName VARCHAR(255),

@StartDate DATE, @EndDate DATE, @Surface VARCHAR(20), @NumberOfRounds INT

AS

BEGIN

--Assign LeagueID = 1 for ATP

INSERT INTO ProfessionalAssociation(LeagueID, LeagueName)

VALUES(@LeagueID, @LeagueName)

INSERT INTO ATP(LeagueID)

VALUES(@LeagueID)

INSERT INTO Location(LocationID, City, State, Country)

VALUES(NEXT VALUE FOR Location_seq, @City, @State, @Country)

INSERT INTO TournamentType(TournamentTypeID, TournamentType)

VALUES(NEXT VALUE FOR Tournament_Type_seq, @TournamentType)

INSERT INTO GrandSlam (TournamentTypeID, TournamentPoints)

VALUES(NEXT VALUE FOR Tournament_Type_seq, @TournamentPoints)

INSERT INTO Tournament(TournamentID, LocationID, TournamentTypeID, TournamentName, StartDate, EndDate, Surface, NumberOfRounds)

VALUES(NEXT VALUE FOR Tournament_seq, NEXT VALUE FOR Location_seq, NEXT VALUE FOR Tournament_Type_seq,

@TournamentName, @StartDate, @EndDate, @Surface, @NumberOfRounds)

END;

go

BEGIN TRANSACTION ListOfTournaments;

EXECUTE ListOfTournaments 1, 'ATP', 1, 'London', 'London', 'GBR', 'Grand Slam', 2000, 'Wimbledon', '2021-06-28', '2021-07-12', 'Grass', 7

COMMIT TRANSACTION ListOfTournaments

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!