sql-server – 使用存储过程将一些数据插入表中
发布时间:2020-12-12 07:27:06 所属栏目:MsSql教程 来源:网络整理
导读:我正在尝试创建将一些数据插入到我的表中的存储过程,但是我遇到了一些错误 Invalid Column name 对于我在存储过程中指定的所有列.我有一个名为ID的IDENTITY COLUMN,每次插入记录时都会增加1.我在表中还有一些其他列,但它们可以为null.这是我的存储过程,无法弄
我正在尝试创建将一些数据插入到我的表中的存储过程,但是我遇到了一些错误
对于我在存储过程中指定的所有列.我有一个名为ID的IDENTITY COLUMN,每次插入记录时都会增加1.我在表中还有一些其他列,但它们可以为null.这是我的存储过程,无法弄清楚我在这里做错了什么. 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,MyPort) values(@myFirstName,@myPort) 然后,无需将@MyId参数传递到存储过程中.所以改成它: CREATE PROCEDURE [dbo].[sp_Test] @myFirstName nvarchar(50),@myPort int AS 如果您想知道添加新插入记录的ID SELECT @@ IDENTITY 到你的程序结束.例如http://msdn.microsoft.com/en-us/library/ms187342.aspx 然后,您将能够选择这种方式,无论您使用SQL还是.NET. 附:一个更好的方法来显示表格定义,就是编写表格并将文本粘贴到stackoverflow浏览器窗口,因为屏幕截图缺少通过GUI设置IDENTITY的列属性部分.要做到这一点,请右键单击表’Script Table as’ – > ‘创建’ – >剪贴板.您还可以进行文件或新查询编辑器窗口(所有自我解释)的实验,看看你得到了什么. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |