操作数类型冲突-SQL Server INSERT存储过程

时间:2018-12-04 15:03:21

标签: sql sql-server stored-procedures

我理解该错误,我不确定为什么会这样。我编写了一个简单的插入过程来更新用户列表。

错误:

  

消息206,级别16,状态2,过程addNewUser,行0 [批处理开始第2行]
  操作数类型冲突:int与日期不兼容

程序声明:

CREATE PROCEDURE [dbo].[addNewUser] 
    @fName VARCHAR(255), 
    @lname VARCHAR(255), 
    @dob DATE, 
    @email VARCHAR(255), 
    @gender VARCHAR(255), 
    @level VARCHAR(255) AS

INSERT INTO [dbo].[User] ([firstname], [lastname], [dob], [email], [gender], [accesslevel]) 
VALUES ('@fName ', N'@lname', @dob, N'@email', N'@gender', N'@level')

呼叫过程:

DECLARE @return_value int

EXEC    @return_value = [dbo].[addNewUser]
        @fName = N'Ste',
        @lname = N'King',
        @dob = 19780103,
        @email = N'Books@email.com',
        @gender = N'Male',
        @level = N'Free'

SELECT  'Return Value' = @return_value
GO

2 个答案:

答案 0 :(得分:3)

只需将@dob = 19780103放在引号'1978-01-03'中:

USE [t7068097]
GO

DECLARE @return_value int

EXEC    @return_value = [dbo].[addNewUser]
        @fName = N'Ste',
        @lname = N'King',
        @dob = '1978-01-03',
        @email = N'Books@email.com',
        @gender = N'Male',
        @level = N'Free'

SELECT  'Return Value' = @return_value

GO

更新:

SELECT CAST('1978-1-1' AS DATE)
SELECT CAST('19780101' AS DATE)

答案 1 :(得分:1)

首先,您的过程是错误的。您不应出于自己的目的将变量放在单引号中

ALTER PROCEDURE [dbo].[addNewUser] 
@fName  varchar(255), 
@lname  varchar(255), 
@dob    DATE, 
@email  varchar(255), 
@gender varchar(255), 
@level  varchar(255) 
AS

INSERT [dbo].[User] 
    (
      [firstname]
    , [lastname]
    , [dob]
    , [email]
    , [gender]
    , [accesslevel]
    ) 
VALUES 
    ( 
      @fName 
    , @lname
    , @dob
    , @email
    , @gender
    , @level
    )
GO

还要将int值发送到日期字段。您需要在单引号中加上您的名字:

DECLARE @return_value int

EXEC    @return_value = [dbo].[addNewUser]
        @fName  = N'Ste',
        @lname  = N'King',
        @dob    = '19780103',
        @email  = N'Books@email.com',
        @gender = N'Male',
        @level  = N'Free'

SELECT  'Return Value' = @return_value
相关问题