Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 尝试在C中保存存储过程时,表附近的increct语法#_Sql_Sql Server_Stored Procedures - Fatal编程技术网

Sql 尝试在C中保存存储过程时,表附近的increct语法#

Sql 尝试在C中保存存储过程时,表附近的increct语法#,sql,sql-server,stored-procedures,Sql,Sql Server,Stored Procedures,我为数据库创建了以下3个表: 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

我为数据库创建了以下3个表:

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])
);
我想制作一个存储过程,用于C#中的AddCustomer表单

下面是我的存储过程的代码:

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
但是,当我尝试运行sql存储过程时,出现以下错误:

“用户”附近的语法不正确

请告诉我的代码出了什么问题。

通常情况下:用户是一个。所以你必须引用它:

insert into [User] (User_Name,Pass,Type_Id)

您的程序存在许多问题。是的,VMai提到的内容非常重要,您也有以下错误

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
创建过程[dbo]。[InsertCustomer]
@买方Id int输出,
@姓氏varchar(50),
@第一个名字varchar(50),
@社会福利委员会(50),
@电话varchar(50),
@用户Id int输出,
@用户名nchar(10),
@通过varchar(50),
@类型_id int输出,
@键入名称nchar(10)
作为
开始
不计数-- 使用以下命令:

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
在上述代码中:

insert into User(User_Name,Pass,Type_Id)
        values(@User_Id,@Pass)
        set @Type_id=SCOPE_IDENTITY
取代

insert into [User] (User_Name,Pass,Type_Id)
        values(@User_Id,@Pass)
        set @Type_id=SCOPE_IDENTITY

因为用户是一个保留字,这就是为什么会出现错误。要避免这种情况,请使用引号。

MySQL或SQL Server?它是哪一个?类型也是一个键word@M.Ali我很节俭,我只在找到无引号的
用户之前阅读。。。我应该和你一样彻底。你的答案更好!您是否已应用@M.Ali提到的所有修复程序?你会犯什么错误?对我来说,这应该被接受为答案,因为它的细节错误指向。@Rahul没有多少新用户了解接受答案的工作原理以及应该如何使用它。毕竟这是OP的第一个问题,所以,我记得当我加入SO时,有很长一段时间我都不知道如何安排一个问题或答案:)哈哈。。。我的回答是a+1。