2017-06-27 22 views
0

我想创建一个存储过程通过以下方式:的Java存储过程给了一个错误

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) 
+2

这不是'的Sql Server'语法 –

+0

提示存在的语法:'创建或者更换程序。 –

+1

您正在使用Oracle语法,但错误消息定义来自Ms Sql-server。检查您是否连接到正确的服务器 – Serg

回答

1

您的语法在sql server中无效。

为了检查是否存在使用object_id功能

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

对于输入参数,你不必提IN关键字。对于OUTPUT参数,最后使用关键字OUT。此外参数与@开始在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 
1

几件事情。这个“/”来自oracle。如果你愿意,你可以使用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; 
+0

也参数列表中的输入不是sql-server。您可能还提到 – GuidoG

+0

CREATE PROC应该如何看起来像 – meallhour

+0

取决于它的oracle或sql-server或其他数据库 – GuidoG