使用存储过程将一些数据插入到表中

我试图创建存储过程插入一些数据到我的表中,但我收到了一些错误

无效的列名称

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

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是什么

SELECT @@ IDENTITY

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

然后,您可以选择这种方式,无论您使用的是SQL还是.NET,都可以通过这种方式进行调用。

Ps更好的方式来向你展示表格定义,将会是脚本表格并将文本粘贴到你的stackoverflow浏览器窗口中,因为你的屏幕截图缺少通过GUI设置IDENTITY的列属性部分。 要做到这一点,请右键单击表'脚本表' - >'创建到' - >剪贴板。 你也可以做文件或新的查询编辑器窗口(所有自我解释)的经验,看看你得到什么。


如果你想在SQL SERVER中填充表,你可以使用while语句如下:

declare @llenandoTabla INT = 0;
while @llenandoTabla < 10000
begin
insert into employeestable // Name of my table
(ID, FIRSTNAME, LASTNAME, GENDER, SALARY) // Parameters of my table
VALUES 
(555, 'isaias', 'perez', 'male', '12220') //values
set @llenandoTabla = @llenandoTabla + 1;
end

希望能帮助到你。

链接地址: http://www.djcxy.com/p/67941.html

上一篇: Use stored procedure to insert some data into a table

下一篇: how to record sound use AudioServicesCreateSystemSoundID