【问题标题】:Syntax error when calling my stored procedure.调用我的存储过程时出现语法错误。
【发布时间】:2016-11-10 21:16:33
【问题描述】:

存储过程

create procedure insertUser
    @uname varchar(50),@udob date, @uadd varchar(100),@umob bigint
as
begin
    insert into userInfo values(@uname,@udob,@uadd,@umob)
end
go

insertUser 'Samuel' '1990-14-04' 'Shivajinagar Pune' 12345630

错误信息:

Msg 102, Level 15, State 1, Line 1 Incorrect syntax near '1990-04-14'.

【问题讨论】:

  • 在调用存储过程时使用逗号分隔参数。
  • @Damien_The_Unbeliever...我尝试过...但没有用
  • @Damien_The_Unbeliever 谢谢...但是我已经找到了解决方案...问题出在我的 sql 服务器上...不知何故,该存储过程无法找到我创建的表...所以我删除了表和存储过程并创建了新的......它工作...... :)

标签: sql-server-2008 tsql date stored-procedures


【解决方案1】:

您对 SP 的调用不正确。使用, 分隔参数,如下所示。此外,日期应以标准格式输入(mm-dd-yyyy 或 yyyy-mm-dd)

insertUser 'Samuel', '1990-04-14', 'Shivajinagar Pune', 12345630

【讨论】:

  • 并且在 sql server 中它也接受不带 , 的参数。
  • 上述语句中SP名称前的exec关键字你试过了吗?
  • exec insertUser 'Nikhil Chaudhari','1990/14/04','Hudko Colony Lonavla',12345630
  • 对于上述语句出现以下错误-“消息 8114,级别 16,状态 5,过程 insertUser,第 0 行错误将数据类型 varchar 转换为日期。”
  • 不...实际上我试图在没有存储过程的情况下将值插入表中...但无法插入...它仅在日期附近给出错误
【解决方案2】:

在调用存储过程时传递参数 name = value 会很清楚。

这样打电话,

CREATE PROCEDURE insertUser @uname VARCHAR(50)
    ,@udob DATE
    ,@uadd VARCHAR(100)
    ,@umob BIGINT
AS
BEGIN
    INSERT INTO userInfo
    VALUES (
        @uname
        ,@udob
        ,@uadd
        ,@umob
        )
END
GO

EXEC insertUser @uname = 'Samuel'
    ,@udob = '1990-14-04'
    ,@uadd = 'Shivajinagar Pune'
    ,@umob = 12345630

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-10
    • 1970-01-01
    • 2013-05-12
    • 2018-02-09
    • 2018-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多