The usual: User is a reserved word in T-SQL. So you got to quote it:
insert into [User] (User_Name,Pass,Type_Id)
Question
I have created the following 3 tables for a database:
CREATE TABLE [dbo].[Buyer] (
[Buyer_Id] INT IDENTITY (1, 1) NOT NULL,
[Last_Name] NVARCHAR (50) NOT NULL,
[First_Name] NVARCHAR (50) NOT NULL,
[Social_No] NVARCHAR (50) NOT NULL,
[Phone] NVARCHAR (50) NOT NULL,
[User_Id] INT NOT NULL,
PRIMARY KEY CLUSTERED ([Buyer_Id] ASC),
CONSTRAINT [FK_User_Id] FOREIGN KEY ([User_Id]) REFERENCES [dbo].[User] ([User_Id])
);
CREATE TABLE [dbo].[Type] (
[Type_Id] INT IDENTITY (1, 1) NOT NULL,
[Type_Name] NCHAR (10) NULL,
PRIMARY KEY CLUSTERED ([Type_Id] ASC)
);
CREATE TABLE [dbo].[User] (
[User_Id] INT IDENTITY (1, 1) NOT NULL,
[User_Name] NCHAR (10) NOT NULL,
[Pass] NVARCHAR (50) NOT NULL,
[Type_Id] INT NOT NULL,
PRIMARY KEY CLUSTERED ([User_Id] ASC),
CONSTRAINT [FK__Type_Id] FOREIGN KEY ([Type_Id]) REFERENCES [dbo].[Type] ([Type_Id])
);
and I want to make a stored procedure with the purpose to be used in my Addcustumer Form in C#.
Bellow it is the code form my stored procedure:
CREATE PROCEDURE [dbo].[InsertCustomer]
@Buyer_Id int output,
@Last_Name varchar(50),
@Fist_Name varchar(50),
@Social_No varchar(50),
@Phone varchar(50),
@User_Id int output,
@User_Name nchar(10),
@Pass varchar(50),
@Type_id int output,
@Type_Name nchar(10)
AS
insert into Buyer(Buyer_Id,Last_Name,First_Name,Social_No,Phone)
values (@Last_Name,@Fist_Name,@Social_No)
set @Buyer_Id=SCOPE_IDENTITY
insert into User(User_Name,Pass,Type_Id)
values(@User_Id,@Pass)
set @Type_id=SCOPE_IDENTITY
insert into Type(Type_Id,Type_Name)
values (@Type_Name)
set @Type_id=SCOPE_IDENTITY
RETURN 0
But when I am trying to run my sql stored procedure I get the following error:
Incorrect syntax near 'User'
Please tell what is wrong with my code.
Solution 2
The usual: User is a reserved word in T-SQL. So you got to quote it:
insert into [User] (User_Name,Pass,Type_Id)
OTHER TIPS
There are a number of issues with your procedure. Yes what VMai has mentioned is very important and you also have the following errors.
CREATE PROCEDURE [dbo].[InsertCustomer]
@Buyer_Id int output,
@Last_Name varchar(50),
@Fist_Name varchar(50),
@Social_No varchar(50),
@Phone varchar(50),
@User_Id int output,
@User_Name nchar(10),
@Pass varchar(50),
@Type_id int output,
@Type_Name nchar(10)
AS
BEGIN
SET NOCOUNT ON; --<-- to suppress the default sql server message (N) row(s) effected.
insert into Buyer(Buyer_Id,Last_Name,First_Name,Social_No,Phone)
values (@Last_Name,@Fist_Name,@Social_No)
set @Buyer_Id = SCOPE_IDENTITY(); --<-- Missing Parenthesis
insert into [User](User_Name,Pass,Type_Id)
values(@User_Id,@Pass)
set @User_Id = SCOPE_IDENTITY(); --<-- Missing Parenthesis and I think
--it was suppose to be @User_Id
insert into [Type](Type_Id,Type_Name)
values (@Type_Name)
set @Type_id = SCOPE_IDENTITY(); --<-- Missing Parenthesis
RETURN 0
END
Use this :
CREATE PROCEDURE [dbo].[InsertCustomer]
@Buyer_Id int output,
@Last_Name varchar(50),
@Fist_Name varchar(50),
@Social_No varchar(50),
@Phone varchar(50),
@User_Id int output,
@User_Name nchar(10),
@Pass varchar(50),
@Type_id int output,
@Type_Name nchar(10)
AS
insert into Buyer(Buyer_Id,Last_Name,First_Name,Social_No,Phone)
values (@Last_Name,@Fist_Name,@Social_No)
set @Buyer_Id=SCOPE_IDENTITY
insert into User(User_Name,Pass,Type_Id)
values(@User_Id,@Pass)
set @Type_id=SCOPE_IDENTITY
insert into Type(Type_Id,Type_Name)
values (@Type_Name)
set @Type_id=SCOPE_IDENTITY
RETURN 0
in above code :
insert into User(User_Name,Pass,Type_Id)
values(@User_Id,@Pass)
set @Type_id=SCOPE_IDENTITY
replace with
insert into [User] (User_Name,Pass,Type_Id)
values(@User_Id,@Pass)
set @Type_id=SCOPE_IDENTITY
because user is a reserved word that's why your are getting error. to avoid this use quote.