将结果输入表的存储过程

发布于 2025-01-14 13:11:22 字数 608 浏览 1 评论 0原文

我正在尝试创建一个存储过程,从 C# 程序中获取数据,然后将数据输入到名为 dbo.Results 的表中,从 dbo.People 表中收集 UserID 。

create Procedure InsertResults
    @ForName nvarchar(50),
    @Surname nvarchar(50)
    @RaceID int,
    @Place int,
    @Fleet nchar(10)
AS
Begin

Insert Into [dbo].[Results] values
    (IDENT_CURRENT(dbo.Results),@RaceID,(Select UserID From dbo.People Where (ForName = @ForName and Surname = @Surname)),@Place,@Fleet)
End

当我执行 SQL 查询来创建它返回的过程时

消息 4104,级别 16,状态 1,过程 InsertResults,第 11 行 [批处理起始行 0]
无法绑定多部分标识符“dbo.Results”。

I am attempting to create a stored procedure take the data from a C# program and then input the data into a table called dbo.Results gathering the UserID from the dbo.People table.

create Procedure InsertResults
    @ForName nvarchar(50),
    @Surname nvarchar(50)
    @RaceID int,
    @Place int,
    @Fleet nchar(10)
AS
Begin

Insert Into [dbo].[Results] values
    (IDENT_CURRENT(dbo.Results),@RaceID,(Select UserID From dbo.People Where (ForName = @ForName and Surname = @Surname)),@Place,@Fleet)
End

Where when I execute the SQL Query to create the Procedure it returns

Msg 4104, Level 16, State 1, Procedure InsertResults, Line 11 [Batch Start Line 0]
The multi-part identifier "dbo.Results" could not be bound.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

饮湿 2025-01-21 13:11:22
  • IDENT_CURRENT() 采用字符串,但

  • 您忽略了 IDENTITY 列而不是尝试查找它

  • 如果您尝试INSERT ... SELECT,则不使用VALUES

    INSERT dbo.Results(全部,列,例外,身份)
      选择@RaceID、用户ID、@地点、@车队
        来自 dbo.People 
        WHERE ForName = @ForName 
          和姓氏 = @Surname;
    

(另外,让我想知道当您有两个不同的名为John Smith的人。)

  • IDENT_CURRENT() takes a string, but you don't want to do that anyway

  • you leave out the IDENTITY column rather than trying to look it up

  • if you are trying to INSERT ... SELECT you don't use VALUES:

    INSERT dbo.Results(all,cols,except,identity)
      SELECT @RaceID,UserID,@Place,@Fleet
        FROM dbo.People 
        WHERE ForName = @ForName 
          AND Surname = @Surname;
    

(Also, makes me wonder what you expect to happen when you have two different people named John Smith.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文