gpt4 book ai didi

sql-server - 使用存储过程将一些数据插入表中

转载 作者:行者123 更新时间:2023-12-03 07:04:20 25 4
gpt4 key购买 nike

我正在尝试创建将一些数据插入到我的表中的存储过程,但我遇到了一些错误,例如

Invalid Column name

对于我在存储过程中指定的所有列。我有一个名为 ID 的 IDENTITY COLUMN,每次插入记录时它都会增加 1。表中还有一些其他列,但它们可以为空。这是我的存储过程,无法弄清楚我在这里做错了什么。

USE MYDB
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[sp_Test]
@myID bigInt,
@myFirstName nvarchar(50)
,@myLastName nvarchar(50)
,@myAddress nvarchar(MAX)
,@myPort int

AS
BEGIN

SET NOCOUNT ON;

BEGIN

insert into MYDB.dbo.MainTable (MyID, MyFirstName, MyLastName, MyAddress, MyPort)
values(@myID, @myFirstName, @myLastName, @myAddress, @myPort)

END

END
GO

这是表定义:

USE [MYDB]
GO

/****** Object: Table [dbo].[MainTable] Script Date: 01/03/2013 11:17:17 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[MainTable](
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[MyID] [bigint] NULL,
[MyFirstName] [nvarchar](50) NULL,
[MyLastName] [nvarchar](50) NULL,
[MyAddress] [nvarchar](max) NULL,
[MyPort] [int] NULL,
[MyZipCode] [nchar](10) NULL,
[CompName] [nvarchar](50) NULL
) ON [PRIMARY]

GO

最佳答案

如果您的表定义具有 IDENTITY 列,例如IDENTITY(1,1) 那么不要在 INSERT INTO 语句中包含 MyId。 IDENTITY 的要点是它给出下一个未使用的值作为主键值。

insert into MYDB.dbo.MainTable (MyFirstName, MyLastName, MyAddress, MyPort)
values(@myFirstName, @myLastName, @myAddress, @myPort)

这样就不需要将 @MyId 参数传递到存储过程中。因此将其更改为:

CREATE PROCEDURE [dbo].[sp_Test]
@myFirstName nvarchar(50)
,@myLastName nvarchar(50)
,@myAddress nvarchar(MAX)
,@myPort int

AS

如果想知道新插入的记录的ID是多少

选择@@IDENTITY

到程序结束。例如http://msdn.microsoft.com/en-us/library/ms187342.aspx

然后,您将能够以任何方式调用它,无论是 SQL 还是 .NET。

P.s.向您展示表定义的更好方法是编写表脚本并将文本粘贴到 stackoverflow 浏览器窗口中,因为您的屏幕截图缺少通过 GUI 设置 IDENTITY 的列属性部分。为此,右键单击表“将表脚本编写为”-->“创建到”--> 剪贴板。您还可以进行"file"或“新建查询编辑器窗口”(所有这些都是不言自明的)体验,看看您会得到什么。

关于sql-server - 使用存储过程将一些数据插入表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14142320/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com