Java 存储过程出错

Java Stored proc giving an error

我正在尝试通过以下方式创建存储过程:

DROP procedure IF EXISTS plus1inout
/;
CREATE procedure plus1inout (IN arg int, OUT res int)
BEGIN ATOMIC
    set res = arg + 1;
END
/;

我收到以下错误:

Msg 156, Level 15, State 1.
Incorrect syntax near the keyword 'IF'.
Msg 156, Level 15, State 1.
Incorrect syntax near the keyword 'IN'. (Line 3)

几件事。那个“/”来自甲骨文。如果你愿意,你可以使用GO这个词。要检查是否存在:您使用此代码:

IF OBJECT_ID('plus1inout', 'P') IS NOT NULL
        DROP PROC plus1inout
GO

然后创建过程。 创建时参数声明错误

CREATE procedure plus1inout (@arg int, @res int out)
BEGIN ATOMIC
    set @res = @arg + 1;
END;

您的语法在 sql 服务器中无效。

要检查是否存在,请使用 object_id 函数

IF OBJECT_ID('plus1inout', 'P') IS NOT NULL
    DROP PROCEDURE plus1inout

对于输入参数,您不必提及 IN 关键字。对于 OUTPUT 参数,在末尾使用关键字 OUT。另外参数以 @ in Sql Server

开头
CREATE PROCEDURE Plus1inout (@arg INT,
                             @res INT output)
AS
  BEGIN
      SET @res = @arg + 1;
  END 

SQL SERVER 2016 中,他们介绍了您用于检查过程是否存在的语法

DROP procedure IF EXISTS plus1inout